我有这样一个记录器设置:
import logging
from logging.handlers import RotatingFileHandler
import sys
# root logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
# create a file logger
handler = RotatingFileHandler('log/core-application.log', maxBytes=1024*1024*1, backupCount=3)
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(funcName)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
# create stdout logger
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(funcName)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.info('Logging all setup')
在我的开发系统上,这个日志记录项工作正常。它记录您在这里看到的:
logger.info('message key: {}'.format('2018-10-19_00:20:56_\xd8\xa7\xd9\x84\xd8\xb5\xd9\x88\xd8\xa7\xd9\x81/'))
我的ubuntu AWS EC2服务器上的同一行给出了一个错误:
--- Logging error --- Traceback (most recent call last): File "/usr/lib/python3.5/logging/init.py", line 982, in emit stream.write(msg) UnicodeEncodeError: 'ascii' codec can't encode characters in position 108-113: ordinal not in range(128)
有人能想象为什么会这样吗?在
顺便说一句: EC2服务器区域设置包括:
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
提前谢谢。在
我刚刚找到了解决方案,想分享一下答案:
它连接到服务器上控制python应用程序的管理器。 不知何故,supervisor config需要包含以下环境变量才能将UTF-8打印到stdout。在
编辑:
https://docs.python.org/3.7/whatsnew/3.7.html#whatsnew37-pep538
Python3.7似乎是为了自动解决这个问题而设计的。在
相关问题 更多 >
编程相关推荐