之前写了一个logging简单的运用,主要是handler看不懂,看了头疼,最近不知道怎么灵光一现,似乎懂了点,趁热学习一下
1.通过名字不同,区别不同的logger,之前没有给name,导致log第一行一个,第二行两个,第三行三个……
import os
import time
import logging
import sys
def getlog(name):
Logname=name
logger=logging.getLogger(Logname)
logger.setLevel(logging.DEBUG)
formatter=logging.Formatter('%(asctime)s-%(levelname)s:%(message)s')
console_handler = logging.StreamHandler(sys.stdout)
console_handler.formatter = formatter
console_handler.setLevel(logging.DEBUG)
logger.addHandler(console_handler)
logfile='result_'+time.strftime('%Y%m%d%H%M%S')+'.log'
File_handler=logging.FileHandler(logfile, mode='a',encoding='utf8')
File_handler.setFormatter(formatter)
File_handler.setLevel(logging.DEBUG)
logger.addHandler(File_handler)
return logger
if __name__ == "__main__":
getlog('debug').debug('this is a logger debug message')
getlog('info').info('this is a logger info message')
getlog('warn').warning('this is a logger warning message')
getlog('error').error('this is a logger error message')
getlog('critical').critical('this is a logger critical message')
2.判断有无logger里有无handlers
import os
import time
import logging
import sys
def getlog():
logger=logging.getLogger()
logger.setLevel(logging.DEBUG)
formatter=logging.Formatter('%(asctime)s-%(levelname)s: %(message)s')
console_handler = logging.StreamHandler(sys.stdout)
console_handler.formatter = formatter
console_handler.setLevel(logging.DEBUG)
logfile='result_'+time.strftime('%Y%m%d%H%M%S')+'.log'
File_handler=logging.FileHandler(logfile, mode='a',encoding='utf8')
File_handler.setFormatter(formatter)
File_handler.setLevel(logging.DEBUG)
if not logger.handlers:
logger.addHandler(File_handler)
logger.addHandler(console_handler)
print(logger.handlers)
return logger
if __name__ == "__main__":
getlog().debug('this is a logger debug message')
getlog().info('this is a logger info message')
getlog().warning('this is a logger warning message')
getlog().error('this is a logger error message')
getlog().critical('this is a logger critical message')
3.removeHandler
import os
import time
import logging
import sys
def getlog(message):
logger=logging.getLogger()
logger.setLevel(logging.DEBUG)
formatter=logging.Formatter('%(asctime)s-%(levelname)s: %(message)s')
console_handler = logging.StreamHandler(sys.stdout)
console_handler.formatter = formatter
console_handler.setLevel(logging.DEBUG)
logfile='result_'+time.strftime('%Y%m%d%H%M%S')+'.log'
File_handler=logging.FileHandler(logfile, mode='a',encoding='utf8')
File_handler.setFormatter(formatter)
File_handler.setLevel(logging.DEBUG)
logger.addHandler(File_handler)
logger.addHandler(console_handler)
logger.debug(message)
logger.info(message)
logger.warning(message)
logger.error(message)
logger.critical(message)
logger.removeHandler(console_handler)
logger.removeHandler(File_handler)
if __name__ == "__main__":
getlog('i am kira')