python记录时间日志_python3 中文日志记录

在Python3中记录中文日志时,需要设置`encoding`参数为`utf-8`以避免UnicodeEncodeError。通过修改`basicConfig`配置,添加`FileHandler`并指定`encoding`,可以成功输出中文日志。示例代码展示了如何配置和使用日志记录器以正确处理中文字符。
摘要由CSDN通过智能技术生成

python3 下记录中文日志要使用 encoding 参数,否则会有以下错误:

--- Logging error ---

Traceback (most recent call last):

File "/Users/evil/.pyenv/versions/3.6.2/lib/python3.6/logging/__init__.py", line 994, in emit

stream.write(msg)

UnicodeEncodeError: 'ascii' codec can't encode characters in position 33-34: ordinal not in range(128)

Call stack:

File "/Users/evil/git/jianshu/crawl_jobs/crawl.py", line 70, in

LOGGER.info("测试")

Message: '测试'

Arguments: ()

修改相关配置

log_name = '2018-05-12.log'

logging.basicConfig(format='[%(asctime)s %(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG, filename=log_name)

LOGGER = logging.getLogger(__name__)

# 新增 fh,修改 basicConfig

fh = logging.FileHandler(encoding='utf-8', mode='a', filename=log_name)

logging.basicConfig(handlers=[fh], format='[%(asctime)s %(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=logging.INFO)

# 此时中文日志可正常输出

LOGGER.info("测试")

basicConfig 的作用是快速配置日志系统,当有 filename 参数时,自动创建一个 FileHandler 进行日志记录。目前版本的 basicConfig 无法传递 encoding 参数,因此直接传入一个 FileHandler,而 handlers 是要接收一个可迭代对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值