将现有 log4j 追加器中的日志写入调试级别为 "error" 或更高的所有日志到 rsyslog



在我们的Java项目中,我们将日志发送给各种附录。如何通过更改诸如log4j.xml之类的配置文件(不处理代码)来登录所有将所有日志从"错误"级别和更高的附加器写给这些附录的所有日志?

在如何通过log4j分开记录错误和信息消息?有一个解释如何创建一个新的appender,并且从我的理解中以跟进该答案,我需要触摸代码。

我的log4j版本是:2.4.1这是我们编写的一台机器的小log4j.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" monitorInterval="5">
  <Appenders>
      <RollingRandomAccessFile name="RollingRandomAccessFile" fileName="log/la.full.log" filePattern="log/la.full.%d{yy-dd-MM}.%i.log">
      <PatternLayout>
        <Pattern>%highlight{%d{DEFAULT}|%5p|%6t|%X|%m%n}</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="10 MB"/>
      </Policies>
      <DefaultRolloverStrategy max="100"/>
    </RollingRandomAccessFile>
    <Console name="STDOUT" target="SYSTEM_OUT">
     <PatternLayout pattern="%highlight{%d{DEFAULT}|%5p|%6t|%X|%m%n}"/>
   </Console>
  </Appenders>
  <Loggers>
    <Root level="debug" additivity="false">
      <AppenderRef ref="STDOUT" level="DEBUG"/>
      <AppenderRef ref="RollingRandomAccessFile" level="DEBUG"/>
    </Root>
  </Loggers>
</Configuration>

给定您为rsyslog添加了一个appender(如果还没有内置的话,应该从Internet上的某个地方可用)您只会添加另一个appender-ref:

<Loggers>
    <Root level="debug" additivity="false">
      <AppenderRef ref="STDOUT" level="DEBUG"/>
      <AppenderRef ref="RollingRandomAccessFile" level="DEBUG"/>
      <AppenderRef ref="RSYSLOG" level="ERROR"/>
    </Root>
</Loggers>

关于loglevel:在root Logger上设置level将"过滤"到调试和更高(调试,信息,错误等)的消息。也将其设置在Appender上,将进一步过滤到该级别(或更高)。因此,如果将appender-ref上的级别属性设置为"错误"(如上所示),它将只会在级别错误和更高的情况下获取消息。另一个Appender不会受到影响的影响,仍会记录调试和信息消息。

相关内容

最新更新