0

以下は、log4j プロパティと Java コードです。すべてのログはデバッグでのみ記録されます。しきい値を追加してみましたが、まだ運がありません。ログ レベルに基づいて、ログ ステートメントを別のファイルに記録する必要があります。

すべてのログはデバッグ ログ ファイルにのみ記録されます。デバッグ ログを削除すると、情報ログ ファイルに記録されます。

しきい値を与えるオプションも機能しません。

log4j.rootLogger = OFF

#define the console appender
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
# now define the layout for the appender
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# now define the rollingFIle appender
log4j.category.com=error, myErrorappender
log4j.additivity.com=false
log4j.appender.myErrorappender=org.apache.log4j.RollingFileAppender
log4j.appender.myErrorappender.File=/Users/uthaman/Documents/workspace/Logging/myErrorlog.log
log4j.appender.myErrorappender.MaxFileSize=2MB
log4j.appender.myErrorappender.MaxBackupIndex=2
log4j.appender.myErrorappender.layout = org.apache.log4j.PatternLayout
log4j.appender.myErrorappender.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c (%F:%L) - %m%n


log4j.category.com=info,myInfoappender
log4j.additivity.com=false
log4j.appender.myInfoappender=org.apache.log4j.RollingFileAppender
log4j.appender.myInfoappender.File=/Users/user/Documents/workspace/Logging/myInfolog.log
log4j.appender.myInfoappender.MaxFileSize=2MB
log4j.appender.myInfoappender.MaxBackupIndex=2
log4j.appender.myInfoappender.layout = org.apache.log4j.PatternLayout
log4j.appender.myInfoappender.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c (%F:%L) - %m%n

log4j.category.com=debug,myDebugappender
log4j.additivity.com=false
log4j.appender.myDebugappender=org.apache.log4j.RollingFileAppender
log4j.appender.myDebugappender.File=/Users/user/Documents/workspace/Logging/myDebuglog.log
log4j.appender.myDebugappender.MaxFileSize=2MB
log4j.appender.myDebugappender.MaxBackupIndex=2
log4j.appender.myDebugappender.layout = org.apache.log4j.PatternLayout
log4j.appender.myDebugappender.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c (%F:%L) - %m%n

これは、ログ ステートメントが記録される Java コードです。

public class Logging {

    private static Logger logger = Logger.getLogger(Logging.class);

    public static void main(String[] args) {
        logger.error("This is error");
        logger.info("This is info");
        logger.debug("This is debug");
    }

}
4

3 に答える 3

1

問題:

log4j 構成で重複キーを定義しました。

    log4j.category.com=error, myErrorappender
    log4j.additivity.com=false

    log4j.category.com=info,myInfoappender
    log4j.additivity.com=false

    log4j.category.com=debug,myDebugappender
    log4j.additivity.com=false
  • Log4jは最後のデバッグ アペンダーのみを使用します ---> 「すべてのログはデバッグ ログ ファイルにのみ記録されています」
  • デバッグ アペンダーを削除すると、情報アペンダーが最後になります ---> 「デバッグ ログを削除すると、情報ログ ファイルに記録されます。」

解決:

    log4j.category.com=debug,myDebugappender,myInfoappender,myErrorappender
    log4j.additivity.com=false
    log4j.appender.myDebugappender.Threshold=DEBUG
    log4j.appender.myInfoappender.Threshold=INFO
    log4j.appender.myErrorappender.Threshold=ERROR

完全に一致するレベルでイベントをフィルタリングする必要がある場合:

     log4j.appender.myDebugappender.filter=org.apache.log4j.varia.LevelMatchFilter
     log4j.appender.myDebugappender.filter.levelToMatch=DEBUG
     ...
于 2013-01-20T07:40:26.343 に答える
1

filter設定ファイルで を使用して、specific levelに書き込まれる を指定することができますappender。サンプルコードを添付してください

    <appender name="DEBUG" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="[%t] %-5p %c - %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="levelMin" value="DEBUG" />
                    <param name="levelMax" value="DEBUG" />
            </filter>
    </appender>
于 2013-02-06T12:31:07.037 に答える
1

log4j.xmlの代わりに構成を使用することを好みますlog4j.properties。次の構成 (基本的な構成) は、必要に応じて機能します...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
    <appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="log.info" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <param name="append" value="true" />
        <param name="threshold" value="info"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C{6} - %m%n" />
        </layout>
    </appender>

    <appender name="fileAppenderDebug" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="log.debug" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <param name="append" value="true" />
        <param name="threshold" value="debug"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C{6} - %m%n" />
        </layout>
    </appender>

    <appender name="fileAppenderError" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="log.error" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <param name="append" value="true" />
        <param name="threshold" value="error"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C{6} - %m%n" />
        </layout>
    </appender>

    <root>
        <priority value="debug" />
        <appender-ref ref="fileAppender" />
        <appender-ref ref="fileAppenderDebug" />
        <appender-ref ref="fileAppenderError" />
    </root>
</log4j:configuration>
于 2013-01-19T20:57:17.433 に答える