2009-05-05 3 views
1

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

私はmylog.warn( 'whatever')を呼び出して、その結果をreq.log_error()に呼び出したいと思っています。ここで、reqはmodpythonの要求です。

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

答えて

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) 
-1

以下を使用します。それは完全にhereと書かれています。

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

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

  3. を使用していますそして、私たちはアプリケーション全体でlogger.error( "何とか何とか何とか")を行うことができます。

これは完全に機能します。 logging.iniファイルは、Webアプリケーション用の他のログファイルと一緒に保管できるように、ログファイルの場所を定義します。

関連する問題