python-- logging 模块(python编译器)

网友投稿 323 2022-08-25


python-- logging 模块(python编译器)

前戏

import logginglogging.debug('debug message') # 调试模式logging.info('info message') # 基础信息logging.warning('warning message') # 警告logging.error('error message') # 错误logging.critical('critical message') # 严重错误

结果:

WARNING:root:warning messageERROR:root:error messageCRITICAL:root:critical message

打印出了warning及以上的信息,python解释器默认的

设置日志级别

import logginglogging.basicConfig(level=logging.DEBUG) # 设置输出的日志级别logging.debug('debug message')logging.info('info message')logging.warning('warning message')logging.error('error message')logging.critical('critical message')

结果:

DEBUG:root:debug messageINFO:root:info messageWARNING:root:warning messageERROR:root:error messageCRITICAL:root:critical message

将日志写到文件

import logginglogging.basicConfig(filename='exa.log', level=logging.INFO)logging.debug('this message should go to the log file')logging.info('so should this')logging.warning('And this,too')

这句中的level=loggin.INFO意思是,把日志纪录级别设置为INFO,也就是说,只有比日志是INFO或比INFO级别更高的日志才会被纪录到文件里,在这个例子, 第一条日志是不会被纪录的,如果希望纪录debug的日志,那把日志级别改成DEBUG就行了。

给日志加上时间

import logginglogging.basicConfig(filename='exa.log', level=logging.INFO, format='%(asctime)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p')logging.debug('this message should go to the log file')logging.info('so should this')logging.warning('And this,too')

结果

2020-09-20 22:08:26 PM so should this2020-09-20 22:08:26 PM And this,too

把日志同时打印在屏幕上和写在日志里

import logginglogger = logging.getLogger('TEST-LOG')logger.setLevel(logging.INFO) # 设置一个全局的日志级别,局部的比全局的级别低时,以全局的为准ch = logging.StreamHandler() # 往屏幕上输出日志ch.setLevel(logging.DEBUG) # 屏幕上的日志级别设置为debugfh = logging.FileHandler("access.log")# 往文件里输出日志fh.setLevel(logging.WARNING) # 文件里的日志级别 为warning# 定义日志格式,%(name)s是上面定义的这个值# %(lineno)d 哪一行打印的日志formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')file_formatter = logging.Formatter('%(asctime)s -%(lineno)d- %(levelname)s - %(message)s')# 添加formatter到屏幕和文件里ch.setFormatter(formatter)fh.setFormatter(file_formatter)# 添加屏幕和文件日志到logger里logger.addHandler(ch)logger.addHandler(fh)logger.debug('debug message')logger.info('info message')logger.warning('warn message')logger.error('error message')logger.critical('critical message')

结果:

屏幕上2018-05-19 13:57:22,611 - TEST-LOG - INFO - info message2018-05-19 13:57:22,611 - TEST-LOG - WARNING - warn message2018-05-19 13:57:22,611 - TEST-LOG - ERROR - error message2018-05-19 13:57:22,612 - TEST-LOG - CRITICAL - critical message文件access.log里2018-05-19 14:03:54,785 -29- WARNING - warn message2018-05-19 14:03:54,785 -30- ERROR - error message2018-05-19 14:03:54,785 -31- CRITICAL - critical message

import logging# create loggerlogger = logging.getLogger('TEST-LOG')logger.setLevel(logging.DEBUG)# create console handler and set level to debugch = logging.StreamHandler()ch.setLevel(logging.DEBUG)# create file handler and set level to warningfh = logging.FileHandler("access.log")fh.setLevel(logging.WARNING)# create formatterformatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')# add formatter to ch and fhch.setFormatter(formatter)fh.setFormatter(formatter)# add ch and fh to loggerlogger.addHandler(ch)logger.addHandler(fh)# 'application' codelogger.debug('debug message')logger.info('info message')logger.warning('warn message')logger.error('error message')logger.critical('critical message')

结果:

2020-09-20 22:10:41,825 - TEST-LOG - DEBUG - debug message2020-09-20 22:10:41,825 - TEST-LOG - INFO - info message2020-09-20 22:10:41,825 - TEST-LOG - WARNING - warn message2020-09-20 22:10:41,825 - TEST-LOG - ERROR - error message2020-09-20 22:10:41,825 - TEST-LOG - CRITICAL - critical message

创建一个logger对象

创建一个文件管理操作符

创建一个屏幕管理操作符

创建一个日志输出的格式

文件管理操作符 绑定一个 格式

屏幕管理操作符 绑定一个 格式

logger对象 绑定 文件管理操作符

logger对象 绑定 屏幕管理操作符

import logging# 创建一个logger对象logger = logging.getLogger()# 创建一个文件管理操作符fh = logging.FileHandler('logger.log', encoding='utf-8')# 创建一个屏幕管理操作符sh = logging.StreamHandler()# 创建一个日志输出的格式format1 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')# 文件管理操作符 绑定一个 格式fh.setFormatter(format1)# 屏幕管理操作符 绑定一个 格式sh.setFormatter(format1)logger.setLevel(logging.DEBUG)# logger对象 绑定 文件管理操作符# logger.addHandler(fh)# logger对象 绑定 屏幕管理操作符logger.addHandler(sh)logger.debug('debug message') # 调试模式logger.info('我的信息') # 基础信息logger.warning('warning message') # 警告logger.error('error message') # 错误logger.critical('critical message') # 严重错误

结果:

2020-09-20 22:11:36,115 - root - DEBUG - debug message2020-09-20 22:11:36,115 - root - INFO - 我的信息2020-09-20 22:11:36,115 - root - WARNING - warning message2020-09-20 22:11:36,115 - root - ERROR - error message2020-09-20 22:11:36,115 - root - CRITICAL - critical message

import loggingfrom logging import handlerslogger = logging.getLogger(__name__)log_file = "timelog.log"fh = handlers.TimedRotatingFileHandler(filename=log_file, when="S", interval=5, backupCount=3)formatter = logging.Formatter('%(asctime)s %(module)s:%(lineno)d %(message)s')fh.setFormatter(formatter)logger.addHandler(fh)logger.warning("test1")logger.warning("test12")logger.warning("test13")logger.warning("test14")

结果:

2020-09-20 22:13:10,481 tests:17 test12020-09-20 22:13:10,483 tests:18 test122020-09-20 22:13:10,483 tests:19 test132020-09-20 22:13:10,483 tests:20 test14


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python-- json 序列化(python编译器)
下一篇:SpringBoot框架整合SwaggerUI的示例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~