第一种编程式方法代码如下
import logging # 编程的方式 # 记录器 logger = logging.getLogger('cn.cccb.applog') logger.setLevel(logging.INFO) # 处理器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|%(levelname)-8s|%(filename)10s:%(lineno)4s|%(message)s") # 给处理器设置格式 consoleHandler.setFormatter(formatter) fileHandler.setFormatter(formatter) # 记录器要设置处理器 logger.addHandler(consoleHandler) logger.addHandler(fileHandler) # 定义一个过滤器,过滤处理器和记录器(笔) flt = logging.Filter("cn.cccb") # 关联过滤器 logger.addFilter(flt) # 打印日志的代码 logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message')
第二种配置文件的方式(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', 1, 0) # 午夜12点之后第几秒开始生成一个新的日志文件,备份的天数,0全部保留 level=DEBUG formatter=simpleFormatter [formatter_simpleFormatter] format=%(asctime)s|%(levelname)-8s|%(filename)10s:%(lineno)4s|%(message)s datefmt=%Y-%m-%d %H:%M:%S
python代码如下
import logging import logging.config # 配置文件的方式来处理日志 logging.config.fileConfig('logging.conf') rootLogger = logging.getLogger() rootLogger.debug("This is root Logger, debug") logger = logging.getLogger('applog') logger.debug("This is applog, debug") a = "abc" try: int(a) except Exception as e: # logger.error(e) logger.exception(e) # 用logger.exception(e) 栈信息报错可以保存到日志文件中 # Traceback (most recent call last): # File "/Users/zhaozhao/Documents/myresource/test/my_log2.py", line 16, in <module> # int(a) # ValueError: invalid literal for int() with base 10: 'abc' # 作为开发者,我们可以通过以下3中方式来配置logging: # # 1)使用Python代码显式的创建loggers, handlers和formatters并分别调用它们的配置函数; # 2)创建一个日志配置文件,然后使用fileConfig()函数来读取该文件的内容; # 3)创建一个包含配置信息的dict,然后把它传递个dictConfig()函数; # 参考链接:https://www.cnblogs.com/yyds/p/6885182.html
精彩评论