Различный макет log4j для отладки и ошибок? - PullRequest
6 голосов
/ 17 июня 2009

В log4j, есть ли способ, чтобы logger.error ("") и logger.debug ("") включали разные выходные макеты?

Я бы хотел, чтобы ошибки включали имена методов и номера строк, которые снижают производительность приложения.

EDIT:

После добавления apache-log4j-extras работает следующий файл конфигурации.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="WARNINGS" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="warnings.log"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MMM-dd HH:mm:ss} %-5p %c - %m%n%n"/>
        </layout>
        <filter class="org.apache.log4j.filter.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG"/>
            <param name="LevelMax" value="WARN"/>
        </filter>
    </appender>

    <appender name="ERRORS" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="errors.log"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <layout class="org.apache.log4j.PatternLayout">
            <!-- %M for method name , %L for line number  -->
            <param name="ConversionPattern" value="%d{yyyy-MMM-dd HH:mm:ss} %-5p %c %M %L - %m%n%n"/>
        </layout>
        <filter class="org.apache.log4j.filter.LevelRangeFilter">
            <param name="LevelMin" value="ERROR"/>
            <param name="LevelMax" value="FATAL"/>
        </filter>
    </appender>

    <logger name="com.foo.bar">
        <appender-ref ref="WARNINGS"/>
        <appender-ref ref="ERRORS"/>
    </logger>

</log4j:configuration>

Этот код был использован для проверки

// goes to errors.txt
     log.error("error");
//goes to warnings.txt
     log.warn("warn");

Ответы [ 2 ]

9 голосов
/ 17 июня 2009

В вашей конфигурации log4j.xml вы можете создать два приложения, каждый из которых использует LevelMatchFilter , и каждый с отдельным выводом шаблона.

1 голос
/ 17 июня 2009

Я бы просто настроил два разных регистратора. Один называется ERROR, а другой - DEBUG. Затем вы можете легко настроить различные выходные схемы и вызывать только ERROR.error или DEBUG.debug.

...