第一种方法:
编程方法:
- import logging
-
- #记录器
- logger = logging.getLogger('applog')
- logger.setLevel('DEBUG')
- #必须设置为两个handler中级别更低的
-
- #处理器handler
- consoleHandler = logging.StreamHandler()
- consoleHandler.setLevel(logging.DEBUG)
-
- #没有给handler指定日志级别,将使用logger的级别
- fileHandler = logging.FileHandler(filename='addDemo.log')
- fileHandler.setLevel(logging.INFO)
- #
- # #formatter格式
- formatter = logging.Formatter('%(asctime)s - %(funcName)s - %(levelname)s - %(message)s')
- #里面的8,10实现了占位对齐
-
- #给处理器设置格式
- consoleHandler.setFormatter(formatter)
- fileHandler.setFormatter(formatter)
-
- #记录器要设置处理器
- logger.addHandler(consoleHandler)
- logger.addHandler(fileHandler)
-
- #定义一个过滤器
- flt = logging.Filter("cn.cccb")
-
- #关联过滤器
- # logger.addFilter(flt)
- fileHandler.addFilter(flt)
-
- #打印日志的代码
- logger.debug("this is debug log")
- logger.info("this is info log")
- logger.warning("this is warning log")
- logger.error("this is error log")
- logger.critical("this is critical log")
第二种方法:
配置文件方法:
logging.conf
- [loggers]
- keys=root,applog
-
- [handlers]
- keys=fileHandler,consoleHandler
-
- [formatters]
- keys=simpleFormatter
-
- [logger_root]
- level=DEBUG
- handlers=consoleHandler
-
- [logger_applog]
- level=DEBUG
- handlers=fileHandler,consoleHandler
-
- qualname=applog
-
- propagate=0
-
-
- [handler_consoleHandler]
- class=StreamHandler
- args=(sys.stdout,)
- level=DEBUG
- formatter=simpleFormatter
-
- [handler_fileHandler]
- class=handlers.TimedRotatingFileHandler
-
- args=('applog.log','midnight',3600,0)
- level=DEBUG
- formatter=simpleFormatter
-
- [formatter_simpleFormatter]
- format=%(asctime)s|%(levelname)8s|%(filename)s[:%(lineno)d]|%(message)s
-
- datefmt=%Y-%m-%d %H:%M:%S
main
- import logging.config
-
- logging.config.fileConfig("logging.conf")
-
- rootlogger = logging.getLogger()
- rootlogger.debug('debug')
-
- logger = logging.getLogger('applog')
- logger.debug('debug2')
-
- a = 'abc'
- try:
- int(a)
- except Exception as e:
- # logger.error(e)
- logger.exception(e)
参考文件