Python_logging在多模块项目中日志输出应用
2020-12-13 03:03
标签:style log key 效果 sim critical sys sage roo 很早之前就想使用log替代print输出调试信息,简单使用后一直觉得程序中添加的log代码是硬代码,不能随时全盘调整输出日志的level。原来之前一直没有成功的原因是。。。根本没有仔细了解logging模块到底有哪些组建和功能。 今天终于学会了如何将python的日志功能应用到工程中,可以将日志按照不同级别输出到日志文件和开发工具的控制台console上。 参考文章:https://blog.csdn.net/langb2014/article/details/53397307 使用logging模块的基本套路和原理看上面的文章就行,下文只列出工程目录、效果、脚本及注意事项 一、目录结构 二、运行效果 logdemo.log文件: Sublime运行的console输出: 三、脚本 1、log.conf --logs目录下的logging模块的配置文件 2、run_test_excel.py --项目入口,主运行文件,调用小弟1号协助产生日志 3、myapp.py --协助多模块日志输出功能的小弟1号,调用小弟2号协助产生日志 4、mylib.py --协助多模块日志输出功能的小弟2号 注意事项: 1、日志检索异常raise KeyError(key),KeyError: ‘formatters‘ 原因:很有可能是主函数logging.config.fileConfig("../logs/log.conf",xxx)时,log.conf路径错误,找不到配置文件,会报此错误 2、本文只是个简单Demo,如果涉及到多线程,可能会产生日志输出和保存异常,本Demo暂时验证不了。 总之:以上就是 Python使用logging模块,在项目中多模块调用产生日志同时输入到1个日志文件且输出到编辑工具console上的全部内容,对你有帮助的请点个赞! Python_logging在多模块项目中日志输出应用 标签:style log key 效果 sim critical sys sage roo 原文地址:https://www.cnblogs.com/kuzaman/p/11056381.html2019-06-21 16:21:39,332 - root - DEBUG - debug8 + 12 message:20
2019-06-21 16:21:39,332 - root - INFO - info8 + 12 message:20
2019-06-21 16:21:39,332 - root - WARNING - warning message
2019-06-21 16:21:39,332 - root - ERROR - error8 + 12 message:20
2019-06-21 16:21:39,333 - root - CRITICAL - critical message
2019-06-21 16:21:39,333 - root - INFO - Started
2019-06-21 16:21:39,333 - root - INFO - Doing something
2019-06-21 16:21:39,333 - root - INFO - Finished
[loggers]
keys=root,main
[handlers]
keys=consoleHandler,fileHandler
[formatters]
keys=fmt
[logger_root]
level=DEBUG
handlers=consoleHandler,fileHandler
[logger_main]
level=DEBUG
qualname=main
handlers=fileHandler
[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=fmt
args=(sys.stdout,)
[handler_fileHandler]
class=logging.handlers.RotatingFileHandler
level=DEBUG
formatter=fmt
args=(‘../logs/logdemo.log‘,‘a‘,20000,5,)
[formatter_fmt]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
1 # run_test_excel.py
2 import time,sys
3 import logging
4 from logging import config
5 from logs.myapp import main
6
7 class run_testcase:
8 def __init__(self):
9 logging.config.fileConfig("../logs/log.conf",disable_existing_loggers=False)
10 logger = logging.getLogger("simpleExample")
11 def add(self,d1,d2):
12 logging.debug(‘debug%s + %s message:%s‘%(d1,d2,d1+d2))
13 logging.info(‘info%s + %s message:%s‘%(d1,d2,d1+d2))
14 logging.warning(‘warning message‘)
15 logging.error(‘error%s + %s message:%s‘%(d1,d2,d1+d2))
16 logging.critical(‘critical message‘)
17 main()
18 return d1+d2
19 if __name__ == ‘__main__‘:
20 run = run_testcase()
21 run.add(8,12)
1 # myapp.py
2 import logging
3 from logging import config
4 from logs import mylib
5
6 def main():
7 logging.info(‘Started‘)
8 mylib.do_something()
9 logging.info(‘Finished‘)
10
11 if __name__ == ‘__main__‘:
12 main()
1 # mylib.py
2 import logging
3
4 def do_something():
5 logging.info(‘Doing something‘)