python - 複数のデーモン/ cronスクリプトにネイティブPythonロギングまたはツイストロガーを使用する方法

python linux logging twisted daemon

私は、cronタスク、ツイストデーモン(一部のデータを含むHttpServer)など、1つのプログラムのさまざまなスクリプトを使用して1つのファイルへのロギングを使用しています。

次のような基本クラスでデフォルトの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))


その後、それは正常に動作し、すべてのスクリプトの出力を1つのファイルに送信しますが、デフォルトのツイストログのいくつかの重要な部分が欠落しています(http要求/ヘッダーに関する情報など)

他に私は次のようなツイストロギングを使用します

        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タスクは出力のコンテキストを切り替え、ロギング出力の一部が欠落していて復元されていないようです

もちろん、Twisted reactorがなくてもcronタスクは機能しますが、Twisted Loggingを使用します。

アプリの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 - Eclipse + PyDevは関数呼び出しに基づいて関数を定義します

python - TwistedはDNSルックアップをキャッシュしますか? TTLを尊重していますか?

python - シリアルポートを介して受信された2つの連続するパケット間の時間を計算するPythonスクリプト

python - Objective CでのHTMLフォームのクリック-Pythonでのmechanizeの使用と同様

python - Djangoで、tests.pyのインポートにサイト名を追加する必要があるのはなぜですか?

python - 管理インターフェイスからデータを追加するときのdjango:admin /でのTypeError…呼び出し不可能なユニコードオブジェクト

python - Mac OS X 10.7 LionでPILを構築できませんでした

python - python SPARQLクエリRESULTS BINDINGS:BINDINGs値のIFステートメント?

python - スクリプトでのPythonプログレスバーの使用

python - Python + XPath:実際に必要な要素の次の要素を選択することは可能ですか?