#-*- 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")