代码之家  ›  专栏  ›  技术社区  ›  sal

调试和错误的不同log4j布局?

  •  6
  • sal  · 技术社区  · 15 年前

    在log4j中,有没有一种方法可以让logger.error(“”)和logger.debug(“”)包含不同的输出布局?

    我希望错误包括方法名和行号,这两者都会降低应用程序的性能。

    编辑:

    在添加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 年前
        1
  •  9
  •   Alex B    9 年前

    在log4j.xml配置中,可以创建两个附加器,每个附加器使用 LevelMatchFilter 每个都有一个单独的模式输出。

        2
  •  1
  •   Gandalf    15 年前

    我只需要设置两个不同的记录器。一个称为错误,另一个称为调试。然后您可以轻松地设置不同的输出布局,只调用error.error或debug.debug。