使用twistd和Python logging记录日志到文件

4
当我像这样运行我的twisted应用程序时:

twistd --pidfile ./twistd.pid -l $HOME/logs/my_application.log -oy service.tac

我发现它并没有记录通过python logging系统发送的任何内容。我注意到twisted中有一个“PythonLoggingObserver”,但是它将twisted日志重定向到logging模块。
我想知道如何使所有日志(不管使用哪个日志模块)都记录到使用twistd时指定的日志文件“-l”中。我怀疑我的日志被写入了守护进程的stdout中。
以下是我在.tac文件中初始化python日志的方式:
import logging

LOG_LEVEL = logging.DEBUG

logger = logging.getLogger(module_name)
logger.setLevel(LOG_LEVEL)
logging.basicConfig(level=LOG_LEVEL)
1个回答

2

使用 twisted.python.log.logfile 添加流处理程序。例如:

>>> from sys import stdout
>>> from logging import StreamHandler, getLogger
>>> from twisted.python.log import startLogging, logfile
>>> observer = startLogging(stdout, setStdout=False)
2015-05-02 06:34:39-0400 [-] Log opened.
>>> getLogger().addHandler(StreamHandler(stream=logfile))
>>> getLogger().log(100, "Hello")
2015-05-02 06:36:26-0400 [-] Hello
>>> 

1
谢谢,这个很好用。请注意,也可以通过在basicConfig中设置“stream=StreamHandler(stream=logfile).stream”来进行配置。 - Jim Cortez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接