2

私はlog4phpでちょっと新しい.. INFOとDEBUGレベルを別のファイルに出力する必要があります。それは可能ですか?私のxmlは次のようになります:

<appender name="dlog" class="LoggerAppenderRollingFile">
    <param name="file" value="C:/log/dlog"></param></appender>
<appender name="ilog" class="LoggerAppenderRollingFile">
    <param name="file" value="C:/log/ilog/"></param></appender>

<root>
    <level value="DEBUG" />       
    <appender_ref ref="dlog" ></appender_ref>
</root>

<logger name="myLogger">      
    <level        value="INFO"/>
    <appender-ref ref="ilog" />
</logger>

* *これは、対応するファイル名の INFO レベルのみを出力します。助けてください :( どうもありがとう。

4

2 に答える 2

3

これは、フィルターと 1 つのロガーを備えた複数のアペンダーを使用して実現できます。

概要

複数のアペンダを定義して、ロギングを異なる宛先に送信できます。レベルごとに 1 つのアペンダーを定義し、各アペンダーは異なるファイルにログを記録します。

これらに加えて、アペンダーごとにフィルターを作成する必要があります。フィルターLoggerFilterLevelRangeを使用し、最小レベルと最大レベルを指定します。フィルタLoggerFilterLevelMatchは、フィルタ に一致しますが、他のフィルタには中立であるため、使用できないことに注意してください。

ロガーに関しては、すべてのアペンダーを唯一無二のロガーにアタッチします。

このようにして、エラー レベルに応じて、さまざまなログ メッセージをさまざまなファイルに送信できます。

構成

<appender name="dlog" class="LoggerAppenderRollingFile">
    <param name="file" value="C:/log/dlog" />
    <filter class="LoggerFilterLevelRange">
        <param name="levelMin" value="debug" />
        <param name="levelMax" value="debug" />
    </filter>
</appender>
<appender name="ilog" class="LoggerAppenderRollingFile">
        <param name="file" value="C:/log/ilog" />
        <filter class="LoggerFilterLevelRange">
            <param name="levelMin" value="info" />
            <param name="levelMax" value="info" />
        </filter>
    </appender>
    <root>
        <level value="INFO" />
        <appender_ref ref="ilog" />
        <appender_ref ref="dlog" />
    </root>
</configuration>

使用法

require_once 'Logger.php';
Logger::configure('log_config.xml');
$logger = Logger::getLogger();
$logger->info('This message is meant to inform.');
$logger->debug('A debug message!');

これが役立つことを願っています。

于 2013-02-01T05:52:50.827 に答える
0

適切な解決策は、フィルターとしきい値をアペンダーに適用することだと思います。そのようです:

<appender name="dlog" class="LoggerAppenderRollingFile">
  <param name="file" value="C:/log/dlog" />
  <filter class="LoggerFilterLevelMatch">
    <param name="LevelToMatch" value="debug" />
    <param name="AcceptOnMatch" value="true" />
  </filter>
  <filter class="LoggerFilterDenyAll" />
</appender>

<appender threshold="INFO" name="ilog" class="LoggerAppenderRollingFile">
  <param name="file" value="C:/log/ilog/" />
</appender>

<root>
  <level value="DEBUG" />       
  <appender_ref ref="dlog" />
  <appender_ref ref="ilog" />
</root>

これにより、(しきい値により)debugレベルがおよび レベル以上のメッセージのみが許可されます。のレベルを超えるメッセージが必要ない場合は、アペンダーと同じフィルターを適用できます。dloginfoiloginfoilogdlog

于 2011-05-14T15:16:11.873 に答える