【问题标题】:Log separate log levels to separate files in log4j2 properties file将单独的日志级别记录到 log4j2 属性文件中的单独文件
【发布时间】:2017-11-01 09:23:30
【问题描述】:

有什么方法可以为不同的日志级别创建单独的日志文件。 我想要的只是将“错误”日志记录到一个文件,将“信息”日志记录到另一个文件。 我在 log4j2.properties 中没有找到任何解决方案。这是我得到的 log4j2.xml,它工作正常。谁能帮我在属性文件中写同样的东西。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="log-path">logs</Property>
</Properties>
<Appenders>
<Console name="console-log" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
</Console>
<RollingFile name="trace-log" fileName="${log-path}/mycuteblog-trace.log"
filePattern="${log-path}/mycuteblog-trace-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
<RollingFile name="error-log" fileName="${log-path}/mycuteblog-error.log"
filePattern="${log-path}/mycuteblog-error-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.mycuteblog.log4j2" level="debug" additivity="false">
<appender-ref ref="trace-log" level="debug"/>
<appender-ref ref="error-log" level="error"/>
<appender-ref ref="console-log" level="debug"/>
</Logger>
<Root level="info" additivity="false">
<AppenderRef ref="console-log"/>
</Root>
</Loggers>
</Configuration>

附: - 我不想为此做任何代码更改。我正在寻找专门的 log4j2.properties。

提前致谢

【问题讨论】:

    标签: logging configuration log4j log4j2


    【解决方案1】:

    ThresholdFilter 用于根据日志级别过滤消息。要获取不同的日志文件,每个附加程序都应该有适当的阈值过滤器。它应该是这样的(带有 xml):

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <Properties>
            <Property name="log-path">logs</Property>
            <Property name="log-pattern">[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1}- %msg%n"/</Property>
        </Properties>
        <Appenders>
            <Console name="console-log" target="SYSTEM_OUT">
                <PatternLayout>
                    <pattern>${log-pattern}</pattern>
                </PatternLayout>
            </Console>
            <RollingFile name="trace-log" fileName="${log-path}/mycuteblog-trace.log" filePattern="${log-path}/mycuteblog-trace-%d{yyyy-MM-dd}.log">
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/>
                <PatternLayout>
                    <pattern>${log-pattern}</pattern>
                </PatternLayout>
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                </Policies>
            </RollingFile>
            <RollingFile name="error-log" fileName="${log-path}/mycuteblog-error.log" filePattern="${log-path}/mycuteblog-error-%d{yyyy-MM-dd}.log">
                <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout>
                    <pattern>${log-pattern}</pattern>
                </PatternLayout>
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                </Policies>
            </RollingFile>
        </Appenders>
        ...
    

    请注意,日志模式被定义为一个属性,因为所有三个附加程序都使用相同的模式。

    我无法帮助配置为属性文件,我从未使用过它。

    您可以在hereThresholdFilter documentation 上找到有关过滤器的更多信息

    【讨论】:

      【解决方案2】:

      如果您使用 log4j2 进行日志记录,请将此行包含在您的 Appender 配置中

      &lt;LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/&gt;

      以上行将错误日志与其他日志分开

      如果将 minLevel 和 maxLevel 作为 INFO 提及,它只考虑 INFO 日志,而不考虑上述级别的日志。

      &lt;LevelRangeFilter minLevel="INFO" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/&gt;

      下面的 log4j.xml 文件对我有用。

      <?xml version="1.0" encoding="UTF-8"?>
      <Configuration status="WARN">
         <Properties>
            <Property name="log-path">logs</Property>
         </Properties>
         <Appenders>
            <Console name="console-log" target="SYSTEM_OUT">
               <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
            </Console>
            <RollingFile name="trace-log" fileName="${log-path}/mycuteblog-trace.log" filePattern="${log-path}/mycuteblog-trace-%d{yyyy-MM-dd}.log">
               <LevelRangeFilter minLevel="TRACE" maxLevel="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
               <PatternLayout>
                  <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
               </PatternLayout>
               <Policies>
                  <TimeBasedTriggeringPolicy interval="1" modulate="true" />
               </Policies>
            </RollingFile>
            <RollingFile name="info-log" fileName="${log-path}/mycuteblog-info.log" filePattern="${log-path}/mycuteblog-info-%d{yyyy-MM-dd}.log">
               <LevelRangeFilter minLevel="INFO" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
               <PatternLayout>
                  <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
               </PatternLayout>
               <Policies>
                  <TimeBasedTriggeringPolicy interval="1" modulate="true" />
               </Policies>
            </RollingFile>
            <RollingFile name="error-log" fileName="${log-path}/mycuteblog-error.log" filePattern="${log-path}/mycuteblog-error-%d{yyyy-MM-dd}.log">
               <LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
               <PatternLayout>
                  <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
               </PatternLayout>
               <Policies>
                  <TimeBasedTriggeringPolicy interval="1" modulate="true" />
               </Policies>
            </RollingFile>
         </Appenders>
         <Loggers>
            <Root level="info" additivity="false">
               <AppenderRef ref="console-log" />
               <AppenderRef ref="trace-log" />
               <AppenderRef ref="error-log" />
               <AppenderRef ref="info-log" />
            </Root>
         </Loggers>
      </Configuration>
      

      更多参考请点击此链接: https://howtodoinjava.com/log4j2/multiple-appenders/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-23
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        • 1970-01-01
        • 1970-01-01
        • 2017-11-26
        • 1970-01-01
        相关资源
        最近更新 更多