Python3 使用 logging 模块输出日志中的中文乱码解决办法

本文介绍了在Python3中使用logging模块记录日志时遇到的中文乱码问题及其解决方案,即在创建FileHandler时指定编码为utf-8。

创建filehandler的时候指定编码为utf-8

handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes=1024 * 1024, backupCount=5, encoding='utf-8')  # 实例化handler
2018-01-18 10:52:44,281 - INFO - ���������һ��
2018-01-18 10:52:44,281 - DEBUG - first 
Python使用`logging`模块日志输出到文件,可按以下方式实现: #### 基本配置 使用`basicConfig`方法可以进行简单的配置,将日志输出到指定文件: ```python import logging # 配置日志,将日志输出到指定文件 logging.basicConfig(filename='app.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') # 记录不同级别的日志 logging.debug('This is a debug message') logging.info('This is an info message') logging.warning('This is a warning message') logging.error('This is an error message') logging.critical('This is a critical message') ``` 上述代码中,`filename`参数指定了日志文件的名称,`level`参数设置了日志的级别,`format`参数定义了日志输出格式[^3]。 #### 高级配置 使用`FileHandler`可以进行更灵活的配置,同时将日志输出到控制台和文件: ```python import logging # 创建一个日志记录器 logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # 创建一个文件处理器 file_handler = logging.FileHandler('app.log', encoding='utf-8') file_handler.setLevel(logging.DEBUG) # 创建一个控制台处理器 console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) # 定义日志格式 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('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') ``` 在这个例子中,创建了一个日志记录器`logger`,并分别创建了文件处理器`file_handler`和控制台处理器`console_handler`。通过设置不同的处理器,可以将日志同时输出到文件和控制台。同时,使用`setFormatter`方法为处理器设置了日志输出格式。需要注意的是,在创建`FileHandler`时指定了编码为`utf-8`,可以避免中文乱码问题[^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值