繁体   English   中英

log4j:如何将日志定向到cron和Webservice的不同文件中?

[英]log4j: How can I direct logs into different files for a cron and for a webservice?

我有一个Cron和一个Web服务,都使用spring实现。 cron和Web服务使用一组类A,B和C来实现其目标。

在每个类中,我将log4j 2用作日志记录机制,如下所示:

Logger log = LogManager.getLogger(A.class.getName());

在log4j.xml中,我有一个RollingAppender记录到一个文件。

现在,我希望Cron登录到其他文件,即使用其他附加程序。 但是,如果我将cron的类别设置为使用其他附加程序,那仍然不会导致A,B和C的日志进入该附加程序。

更新:log4j配置:

<Configuration status="warn" name="mylogger" packages="">
  <Properties>
    <Property name="baseDir">/var/log/tomcat</Property>
  </Properties>
  <Appenders>
    <RollingFile name="RollingFile" fileName="${baseDir}/app.log"
      filePattern="${baseDir}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd}.log.gz">
    <PatternLayout><Pattern>%5p %d{ISO8601} [%t][%x] %c - %m%n</Pattern></PatternLayout>
    <Policies>
        <TimeBasedTriggeringPolicy />
    </Policies>
  </RollingFile>
  </Appenders>
  <Loggers>
   <Root level="debug">
     <AppenderRef ref="RollingFile"/>
   </Root>
 </Loggers>
</Configuration>

如果要使用相同的类登录到不同的文件,可以使用下面提到的配置。

<Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <RollingFile name="rollingFileAppender"
            fileName="/data/abc.log"
            filePattern="/data/abc-%d{MM-dd-yyyy}-%i.log">
            <PatternLayout>
                <Pattern>%d{ISO8601} %-5p [%t] (%F:%L) - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"
                    modulate="true" />
                <SizeBasedTriggeringPolicy size="50 MB" />
            </Policies>
        </RollingFile>
        <RollingFile name="rollingFilesAppender"
            fileName="/data/cde.log"
            filePattern="/data/fgh-%d{MM-dd-yyyy}-%i.log">
            <PatternLayout>
                <Pattern>%d{ISO8601} %-5p [%t] (%F:%L) - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"
                    modulate="true" />
                <SizeBasedTriggeringPolicy size="50 MB" />
            </Policies>
        </RollingFile>
    </Appenders>

<Loggers>

        <Root level="ERROR">
            <AppenderRef ref="CONSOLE" />
        </Root>

        <Logger name="rollingFilesLogger" additivity="false" level="WARN">
            <AppenderRef ref="rollingFilesAppender" />
        </Logger>

        <Logger name="com.log4jtest" additivity="false" level="INFO">
            <AppenderRef ref="rollingFileAppender" />
        </Logger>

    </Loggers>

在Java文件中,您可以使用like:

private static final Logger LOGGER = LogManager.getLogger(Hello.class);

private static final Logger SECOND_LOGGER = LogManager.getLogger("rollingFilesLogger");

使用此功能,您将能够以两个不同的文件发送日志。

参考: https : //github.com/ragnar-lothbrok/log4j2-example

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM