1

Python2.7 標準ライブラリ ロガーを使用する単純な Twisted アプリケーションをデーモン化しようとしています。

セットアップは次のとおりです。

Python アプリケーション ファイル (run.py) :

import logging
import logging.config
from twisted.internet import reactor

import conf

def main():
    logging.config.dictConfig(conf.LOGGERCONF)
    logger = logging.getLogger(conf.LOGGERNAME)
    logger.debug('Starting the reactor...')
    reactor.callWhenRunning(lambda: logger.info('Reactor started'))
    reactor.run()

main()

Twistd アプリケーション ファイル (daemon.tac) :

from twisted.application.service import Application
from twisted.python.log import PythonLoggingObserver
from twisted.python.log import ILogObserver

application = Application('run')
application.setComponent(ILogObserver, PythonLoggingObserver().emit)

ログ オブザーバー ファイル (daemonlog.py) :

from twisted.python import log

def logger():
    return log.PythonLoggingObserver().emit

次を使用してアプリケーションを起動します。

python run.py

すべてが正常に機能し、ログ メッセージが正しくファイルされ、表示されます (ロガーの構成に従って)。

でデーモン化しようとしています:

twistd -y daemon.tac --logger=daemonlog.logger

デーモンは正​​常に起動し、twistd.pid ファイルが (正しい pid 番号で) 作成され、ps -ef コマンドで実行されているデーモンが表示されますが、ログ ファイルは表示されません (twistd.log またはログ ファイルのいずれも表示されません)。 twistd なしで正常に起動されたときにアプリケーションによって作成されます)。

最後に、Python の標準ライブラリ ロガーと一種の "バイパス" twistd ロガーのみを使用したいと思います。

私はおそらく何かを見逃しているか、誤解しているので、助けていただければ幸いです。

4

0 に答える 0