python-设置log

#-*- coding: UTF-8 -*-
__author__ = '007'
__date__ = '2016/6/16'

import logging
import ctypes

#STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE= -11
#STD_ERROR_HANDLE = -12

FOREGROUND_WHITE = 0x0007
FOREGROUND_BLUE = 0x01 # text color contains blue.
FOREGROUND_GREEN= 0x02 # text color contains green.
FOREGROUND_RED  = 0x04 # text color contains red.
FOREGROUND_INTENSITY = 0x08 # text color is intensified.
FOREGROUND_YELLOW = FOREGROUND_RED | FOREGROUND_GREEN

BACKGROUND_BLUE = 0x10 # background color contains blue.
BACKGROUND_GREEN= 0x20 # background color contains green.
BACKGROUND_RED  = 0x40 # background color contains red.
BACKGROUND_INTENSITY = 0x80 # background color is intensified.

std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
def set_color(color,handle = std_out_handle):
    bb = ctypes.windll.kernel32.SetConsoleTextAttribute(handle,color)
    return bb

class logger:
    def __init__(self,name,path,clevel=logging.DEBUG,flevel=logging.DEBUG):
        self.logger = logging.getLogger(name)
        self.logger.setLevel(logging.DEBUG)

        fmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

        ch = logging.StreamHandler()
        ch.setFormatter(fmt)
        ch.setLevel(clevel)

        fh = logging.FileHandler(path)
        fh.setFormatter(fmt)
        fh.setLevel(flevel)

        self.logger.addHandler(ch)
        self.logger.addHandler(fh)

    def debug(self,message):
        self.logger.debug(message)

    def info(self,message,color=FOREGROUND_GREEN):
        set_color(color)
        self.logger.info(message)
        set_color(FOREGROUND_WHITE)

    def warn(self,message,color=FOREGROUND_YELLOW):
        set_color(color)
        self.logger.warn(message)
        set_color(FOREGROUND_WHITE)

    def error(self,message,color=FOREGROUND_RED):
        set_color(color)
        self.logger.error(message)
        set_color(FOREGROUND_WHITE)

    def critical(self,message,color=FOREGROUND_BLUE):
        set_color(color)
        self.logger.critical(message)
        set_color(FOREGROUND_WHITE)

if __name__ == "__main__":
    logger1 = logger('one','test.log',logging.DEBUG,logging.DEBUG)
    logger1.debug("logger1 debug message")
    logger1.info("logger1 info message")
    logger1.warn("logger1 warn message")
    logger1.error("logger1 error message")
    logger1.critical("logger1 critical message")

    logger2 = logger('two','test.log',logging.INFO,logging.INFO)
    logger2.debug("logger2 debug message")
    logger2.info("logger2 info message")
    logger2.warn("logger2 warn message")
    logger2.error("logger2 error message")
    logger2.critical("logger2 critical message")

    logger3 = logger('three',"test.log",logging.WARNING)
    logger3.debug("logger3 debug message")
    logger3.info("logger3 info message")
    logger3.warn("logger3 warn message")
    logger3.error("logger3 error message")
    logger3.critical("logger3 critical message")

    logger4 = logger('four',"test.log",logging.ERROR,logging.ERROR)
    logger4.debug("logger4 debug message")
    logger4.info("logger4 info message")
    logger4.warn("logger4 warn message")
    logger4.error("logger4 error message")
    logger4.critical("logger4 critical message")

    logger5 = logger('five',"test.log",logging.CRITICAL,logging.CRITICAL)
    logger5.debug("logger5 debug message")
    logger5.info("logger5 info message")
    logger5.warn("logger5 warn message")
    logger5.error("logger5 error message")
    logger5.critical("logger5 critical message")

  

原文地址:https://www.cnblogs.com/andr01la/p/6953225.html