logging模块使用

最详细的还是 官方文档

最简单的使用
# -*- coding:utf-8 -*-
import logging

logging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error message')
logging.critical('critical message')

默认情况下,输出到屏幕,只输出warn及以上信息。运行结果:

$ python log_test.py
WARNING:root:warn message
ERROR:root:error message
CRITICAL:root:critical message
更改日志级别
# -*- coding:utf-8 -*-
import logging

logging.basicConfig(level=logging.INFO)
logging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error message')
logging.critical('critical message')

运行结果:

$ python log_test.py
INFO:root:info message
WARNING:root:warn message
ERROR:root:error message
CRITICAL:root:critical message
输出日志到文件
# -*- coding:utf-8 -*-
import logging

logging.basicConfig(filename='log.log', level=logging.INFO, format='[%(asctime)s][%(process)d][%(thread)d][%(filename)s][line:%(lineno)d][%(levelname)s] %(message)s')
logging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error message')
logging.critical('critical message')

运行,屏幕上没有任何输出,但是目录下多了log文件,内容如下:

[2020-02-06 23:08:31,586][439325][140563023099712][log.py][line:9][INFO] info message
[2020-02-06 23:08:31,587][439325][140563023099712][log.py][line:10][WARNING] warning message
[2020-02-06 23:08:31,587][439325][140563023099712][log.py][line:11][ERROR] error message
[2020-02-06 23:08:31,587][439325][140563023099712][log.py][line:12][CRITICAL] critical message
两个重要的官方示例
示例一
import logging

# create logger
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)

# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# add formatter to ch
ch.setFormatter(formatter)

# add ch to logger
logger.addHandler(ch)

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

从命令行运行此模块生成以下输出:

$ python simple_logging_module.py
2005-03-19 15:10:26,618 - simple_example - DEBUG - debug message
2005-03-19 15:10:26,620 - simple_example - INFO - info message
2005-03-19 15:10:26,695 - simple_example - WARNING - warn message
2005-03-19 15:10:26,697 - simple_example - ERROR - error message
2005-03-19 15:10:26,773 - simple_example - CRITICAL - critical message
示例二

以下 Python 模块创建的记录器、处理程序和格式化程序几乎与上面列出的示例中的相同,唯一的区别是对象的名称:

import logging
import logging.config

logging.config.fileConfig('logging.conf')

# create logger
logger = logging.getLogger('simpleExample')

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

tip: getLogger() 返回对具有指定名称的记录器实例的引用(如果已提供),或者如果没有则返回 root 。
这是 logging.conf 文件:

[loggers]
keys=root,simpleExample

[handlers]
keys=consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_simpleExample]
level=DEBUG
handlers=consoleHandler
qualname=simpleExample
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

format=[%(asctime)s][%(process)d][%(thread)d][%(filename)s][line:%(lineno)d][%(levelname)s]%(message)s

输出几乎与不基于配置文件的示例相同:

$ python simple_logging_config.py
2005-03-19 15:38:55,977 - simpleExample - DEBUG - debug message
2005-03-19 15:38:55,979 - simpleExample - INFO - info message
2005-03-19 15:38:56,054 - simpleExample - WARNING - warn message
2005-03-19 15:38:56,055 - simpleExample - ERROR - error message
2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message

配置文件方法比 Python 代码方法有一些优势,主要是配置和代码的分离以及非开发者轻松修改日志记录属性的能力。

logging模块是Python中用于记录日志的标准库。下面是一个使用logging模块的基本场景使用实例\[1\]: ```python import logging # 配置日志输出的格式 logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s', level=logging.INFO) # 创建一个logger对象 logger = logging.getLogger(__name__) # 输出不同级别的日志 logger.debug('This is a debug message') logger.info('This is an info message') logger.warning('This is a warning message') logger.error('This is an error message') logger.critical('This is a critical message') ``` 在上面的例子中,我们首先通过`basicConfig`函数配置了日志输出的格式和级别。然后,我们创建了一个名为`__name__`的logger对象,这样做的好处是可以在日志中明确显示消息来自哪个模块\[2\]。接下来,我们使用不同级别的方法来输出日志信息。 除了上述基本用法,还可以通过配置文件或使用`logging.config`模块来配置日志\[3\]。通过配置文件可以更灵活地配置不同模块的日志输出。在实际开发中,可以先编写好一个配置文件,然后在主函数中通过`fileConfig`加载配置文件。然后,在不同的模块中可以使用根logger的子logger来进行日志记录,而不需要反复定义和配置各个模块的logger。 希望以上内容对您有帮助。如果需要更详细和灵活的使用方法,请参考官方帮助文档:https://docs.python.org/zh-cn/3/howto/logging.html。 #### 引用[.reference_title] - *1* [[ Python入门教程 ] Python中日志记录模块logging使用实例](https://blog.csdn.net/weixin_32687283/article/details/113652063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [logging模块详细使用](https://blog.csdn.net/lucylily11/article/details/116050564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值