我使用一个程序的不同脚本记录到一个文件 - 例如 cron 任务、扭曲的守护进程(带有一些数据的 HttpServers)等。
如果我在基类中使用默认的 Python 日志记录,例如
import logging
import logging.handlers
....
self.__fname = open(logname, 'a')
logging.basicConfig(format=FORMAT, filename=logname, handler=logging.handlers.RotatingFileHandler)
self._log = logging.getLogger(self.__pname)
self._log.setLevel(loglevel)
logging.warn('%s %s \033[0m' % (self.__colors[colortype], msg))
然后它正常工作,将所有脚本的输出发送到一个文件中,但缺少默认扭曲日志的一些重要部分 - 例如有关 http 请求/ header 等的信息
否则我使用扭曲的日志记录,例如
from twisted.python.logfile import DailyLogFile
from twisted.python import log
from twisted.application.service import Application
....
application = Application("foo")
log.startLogging(DailyLogFile.fromFullPath(logname))
print '%s %s \033[0m' % (self.__colors[colortype], msg)
然后处理额外的数据,但是从不同的脚本记录日志存在一些问题 - 看起来 cron 任务出现问题。看起来这些 cron 任务会切换输出的上下文,并且日志输出的某些部分丢失且未恢复
当然 - cron 任务在没有 Twisted reactor 的情况下工作,但使用 twisted 日志记录。
我应该如何记录应用程序的 Twisted/cron 部分打印的所有数据?
感谢您的帮助!
最佳答案
我认为关键是你不应该使用 DailyLogFile 而是使用 PythonLOggingObserver 将日志重定向到标准 lib 日志
from twisted.python import log
observer = log.PythonLoggingObserver()
observer.start()
log.msg('%s %s \033[0m' % (self.__colors[colortype], msg))
您可能还想查看文档中的示例:http://twistedmatrix.com/documents/current/core/howto/logging.html#auto3
关于python - 如何为多个守护进程/cron 脚本使用 native Python 日志记录或/和 Twisted 记录器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502295/