Pytanie w sprawie logging, java, configuration, log4j – Inny układ log4j dla debugowania i błędów?

6

Czy w log4j istnieje sposób na logger.error (""), a logger.debug ("") zawiera różne układy wyjściowe?

Chciałbym, aby błędy zawierały nazwy metod i numery linii, z których oba spowalniają działanie aplikacji.

EDYTOWAĆ:

Po dodaniu apache-log4j-extras działa następujący plik konfiguracyjny.

<code><?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>
</code>

Ten kod został użyty do testowania

<code>// goes to errors.txt
     log.error("error");
//goes to warnings.txt
     log.warn("warn");
</code>
@Gandalf dzięki. Spróbuję. sal
W twoim ConversionPattern możesz użyć% d {ISO8601}, który jest zoptymalizowanym formaterem czasu, który log4j zapewnia wygodę i szybkość. Gandalf

Twoja odpowiedź

2   odpowiedź
9

z których każdy używaLevelMatchFilter i każdy z osobnym wyjściem wzoru.

Link LevelMatchFilter już nie działa Kairan
Lubię to. Czy możesz wskazać jakiś przykład? sal
1

a drugi o nazwie DEBUG. Następnie możesz łatwo skonfigurować różne układy wyjściowe i wywoływać tylko ERROR.error lub DEBUG.debug.

Zła rada. Niczego nie podejrzewający użytkownicy mogą podążać za twoją radą, co byłoby dość niefortunne. Ceki
Jeśli tak się czujesz, powiedz mi dlaczego - nie ślepo powiedz, że coś jest złym doradztwem, nie dając lepszej porady. Dlaczego miałoby to być niefortunne? Gandalf
Lepszą radę dał już „Alex B”. Wywołanie ERROR.error lub DEBUG.debug jest dość głupie. Przeczytaj dokumentację na log4j lub uzyskaj wskazówkę. Ceki
Nawet mądrzy ludzie od czasu do czasu mówią głupie rzeczy. Nie brałbym krytycznych uwag na temat waszej rady na temat log4j i przy tej konkretnej okazji jako osobistej. Ceki

Powiązane pytania