08-02-loggin-模块

博客给出了程序员和老板看的不同日志格式。程序员看的格式包含时间、线程等详细信息,保存到 coder.log;老板看的格式较简单,保存到 boss.log。还给出了完整的日志配置字典,包含格式、处理器等设置。

程序员看的格式

standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' '[%(levelname)s][%(message)s]' #其中name为getlogger指定的名字
logfile_path1 = "coder.log"

老板看的格式

simple_format = '[%(levelname)s][%(asctime)s]%(message)s'
logfile_path2 = "boss.log"

LOGGING_DIC = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': standard_format
},
'simple': {
'format': simple_format
},
},
'filters': {},
'handlers': {
#打印到终端的日志
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler', # 打印到屏幕
'formatter': 'simple'
},
#打印到文件的日志,收集info及以上的日志
'std': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler', # 保存到文件
'formatter': 'standard',
'filename': logfile_path1, # 日志文件
'maxBytes': 102410245, # 日志大小 5M
'backupCount': 5, #日志文件最大个数
'encoding': 'utf-8', # 日志文件的编码
},
'boss': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler', # 保存到文件
'formatter': 'simple',
'filename': logfile_path2, # 日志文件
'maxBytes': 1024 * 1024 * 5, # 日志大小 5M
'backupCount': 5, # 日志文件最大个数
'encoding': 'utf-8', # 日志文件的编码
}
},
'loggers': {
#logging.getLogger(name)拿到的logger配置
'aa': {
'handlers': ['std', 'console',"boss"], # 这里把上面定义的handler都加上,即log数据会同时输出到三个位置
'level': 'INFO',
'propagate': True, # 向上(更高level的logger)传递
},
},
}

转载于:https://www.cnblogs.com/qiangyuzhou/p/10899746.html

03-09
<think>嗯,用户想了解Python的logging模块的使用指南。首先,我需要回忆一下logging模块的基本结构和常用方法。记得logging模块有几个核心组件,比如Logger、Handler、Formatter、Filter,这些应该都需要解释清楚。 用户提供的引用资料里有提到basicConfig,这是配置日志记录的快捷方法。应该先介绍这个,因为它适合快速上手。然后可能需要详细说明如何创建Logger实例,以及如何设置不同的Handler,比如FileHandler和StreamHandler,这样用户可以把日志输出到文件和终端。 还要注意日志级别的设置,比如DEBUG、INFO、WARNING等级别,不同的级别对应不同的重要性,用户需要知道如何过滤日志信息。引用里提到level=logging.DEBUG,这可能是在basicConfig中设置的例子,应该说明各个级别的区别和使用场景。 另外,Formatter用来定义日志的格式,比如时间、日志级别、消息内容等,这也是一个重点。用户可能需要自定义格式,所以需要给出例子,比如使用format参数在basicConfig中设置,或者通过Handler的setFormatter方法。 引用中还提到了FileHandler的打开模式,比如mode='a',这说明可以追加写入,避免覆盖原有日志。这部分可能在讲解FileHandler的时候提到。 然后,用户可能需要了解如何在不同模块中使用logging,比如通过logging.getLogger(__name__)来获取Logger实例,这样可以更好地追踪日志来源。 最后,结合用户提供的引用内容,需要确保回答中正确引用对应的注释,比如使用[^3]来引用basicConfig的例子,[^5]引用FileHandler的模式设置等。还要生成相关问题,可能涉及高级配置、性能优化、常见问题解决等,这需要根据logging模块的常见使用场景来设计。 现在需要组织这些信息,按照用户的要求分步骤说明,确保结构清晰,使用正确的LaTeX格式,比如行内公式用$...$,独立公式用$$...$$,但这里可能更多是代码和配置示例。同时,回答要使用中文,并自然地插入引用标识。</think>### Python logging模块使用指南 #### 一、核心组件与基础配置 1. **日志级别** logging模块定义了6种日志级别(从低到高): - `DEBUG`:调试细节,如变量状态 - `INFO`:程序正常运行信息 - `WARNING`:潜在问题警告 - `ERROR`:严重错误(部分功能失效) - `CRITICAL`:致命错误(程序崩溃) 通过`basicConfig`设置全局级别(仅捕获该级别及以上日志): ```python import logging logging.basicConfig(level=logging.DEBUG) ``` 2. **基础输出方法** 直接调用不同级别的日志记录函数: ```python logging.debug("调试信息") logging.info("状态更新") logging.warning("内存不足") ``` #### 二、进阶配置(文件+终端输出) 1. **创建Logger实例** 建议通过`getLogger`获取独立Logger对象,避免全局配置冲突[^4]: ```python logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) ``` 2. **添加Handler处理器** - **文件输出**:使用`FileHandler`并指定写入模式(如追加模式`a`)[^5] - **终端输出**:使用`StreamHandler` ```python # 文件处理器 fh = logging.FileHandler("app.log", mode='a') fh.setLevel(logging.WARNING) # 终端处理器 ch = logging.StreamHandler() ch.setLevel(logging.INFO) logger.addHandler(fh) logger.addHandler(ch) ``` 3. **自定义日志格式** 通过`Formatter`定义包含时间戳、模块名等信息的格式[^2]: ```python formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setFormatter(formatter) ``` #### 三、典型应用场景 ```python # 完整配置示例 import logging logger = logging.getLogger("MyApp") logger.setLevel(logging.DEBUG) # 创建文件处理器 file_handler = logging.FileHandler('application.log', encoding='utf-8') file_handler.setLevel(logging.WARNING) # 创建控制台处理器 console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) # 创建格式化器 formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s') file_handler.setFormatter(formatter) console_handler.setFormatter(formatter) # 添加处理器 logger.addHandler(file_handler) logger.addHandler(console_handler) # 使用示例 logger.debug("变量x=42") # 仅在调试模式可见 logger.error("数据库连接失败") # 同时写入文件和控制台 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值