1

Pythonのロギングモジュールをapache/modpythonで動作させる標準的な方法は何ですか?

mylog.warn('whatever') を呼び出して、その結果を req.log_error() に呼び出したいと思います。req は modpython リクエストです。

これを設定する簡単な方法はありますか?

4

2 に答える 2

2

私はやったことはありlogging.Handlerませんが、 のサブクラスを書くことはそれほど難しいことではないようです。このようなものがうまくいくはずです。現在 mod_python がインストールされていないため、実際にこれを試したとは言えませんが、logging.root.addHandler(ApacheLogHandler())どこかに呼び出して動作させることができるはずです。YMMV。

import logging
import apache

class ApacheLogHandler(logging.Handler):
    LEVEL_MAP = {
        logging.DEBUG: apache.APLOG_DEBUG,
        logging.INFO: apache.APLOG_INFO,
        logging.WARNING: apache.APLOG_WARNING,
        logging.ERROR: apache.APLOG_ERR,
        logging.CRITICAL: apache.APLOG_CRIT,
        }
    def __init__(self, request=None):
        self.log_error = apache.log_error
        if request is not None:
            self.log_error = request.log_error
    def emit(self,record):
        apacheLevel = apache.APLOG_DEBUG
        if record.levelno in ApacheLogHandler.LEVEL_MAP:
            apacheLevel = ApacheLogHandler.LEVEL_MAP[record.levelno]
        self.log_error(record.getMessage(), apacheLevel)
于 2009-05-05T03:02:26.177 に答える
-1

以下を使用します。ここに完全に文書化されています。

  1. logging.ini ファイルでlogging.fileConfigを使用します。

  2. 各モジュールはlogger= logging.getLogger(__name__)

  3. 次に、アプリケーション全体で logger.error("blah blah blah") を実行できます。

それは完全に機能します。logging.ini ファイルは、Web アプリの他のログ ファイルと一緒にログ ファイルを保持できるように、ログ ファイルの保存先を定義します。

于 2009-05-05T10:18:14.850 に答える