python - 如何为多个守护进程/cron 脚本使用 native Python 日志记录或/和 Twisted 记录器?

标签 python linux logging twisted daemon

我使用一个程序的不同脚本记录到一个文件 - 例如 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/

相关文章:

c# - .NET 的 X509Store 能否用于从远程 Linux 商店获取证书?

azure - 如何从azure webjob实现日志记录到azure eventhub

Python pyodbc.row 列出

python - 如何通过运行 'python ...' 从 shell 启动 ipython?

linux - Jenkins 、xvfb 和 Selenium

php - 如何使用php复制文件并截断​​原始文件而不丢失数据

java - 审计和日志记录的区别?

python - 如何赋予 Twisted 守护进程 root 权限

python - CV2(cv2.imwrite)-Python不断抛出 “Assertion failed,”错误

linux - 在 Red Hat Linux 11.0.2 WEX CA 上建立索引时出现错误