繁体   English   中英

log4j2文件未写入文件

[英]log4j2 file not writing to file

我已经在网上搜索了几天,但似乎无济于事。 我尝试从log4j 1.x迁移到log4j 2,但是此处不正确,希望你们中的一个能提供帮助。

我有一个在Websphere 8上运行的JSF应用程序,这是到目前为止的配置:

 <?xml version="1.0" encoding="UTF-8"?>
   <Configuration>
    <Filter type="ThresholdFilter" level="trace"/>
    <Appenders>
        <RollingFile name="DEBUG" filePattern="C:/Files/varm_debug.%d{yyyy-MM-dd}.log" fileName="C:/Files/varm_debug.log" append="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} ;%-5p; [%c{1}.%M]; %m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="1500KB"/>
            </Policies>
            <DefaultRolloverStrategy max="20"/>
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
        </RollingFile>
        <RollingFile name="INFO" filePattern="C:/Files/varm_info.%d{yyyy-MM-dd}.log" fileName="C:/Files/varm_info.log" append="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} ;%-5p; [%c{1}.%M]; %m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="1500KB"/>
            </Policies>
            <DefaultRolloverStrategy max="20"/>
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
        </RollingFile>

        <RollingFile name="WARN" filePattern="C:/Files/varm_warn.%d{yyyy-MM-dd}.log" fileName="C:/Files/varm_warn.log" append="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} ;%-5p; [%c{1}.%M]; %m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="500KB"/>
            </Policies>
            <DefaultRolloverStrategy max="20"/>
            <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
        </RollingFile>

        <RollingFile name="ERROR" filePattern="C:/Files/varm_error.%d{yyyy-MM-dd}.log" fileName="C:/Files/varm_error.log" append="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} ;%-5p; [%c{1}.%M]; %m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="500KB"/>
            </Policies>
            <DefaultRolloverStrategy max="20"/>
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
        </RollingFile>


        <File name="comparisonLogAppender" fileName="C:/Files/VARM-output.log" append="true">
            <PatternLayout pattern="%d{ISO8601}; %m%n"/>
        </File>
    </Appenders>
    <Loggers>
    <!-- Logger to compare results -->

        <!--  Logger to log infos/errors throughout comparison -->
        <Logger name="comparisonLogger" level="trace"  additivity="true" immediateFlush="true">
            <AppenderRef ref="comparisonLogAppender"/>

        </Logger>

        <Logger name="de.saltsolutions.varm" level="info" >
            <AppenderRef ref="DEBUG" level="debug"/>
            <AppenderRef ref="INFO" level="info"/>
            <AppenderRef ref="WARN" level="warn"/>
            <AppenderRef ref="ERROR" level="error"/>
        </Logger>
        <Logger name="org.hibernate" level="warn">
                    <AppenderRef ref="DEBUG" level="debug"/>
            <AppenderRef ref="INFO" level="info"/>
            <AppenderRef ref="WARN" level="warn"/>
            <AppenderRef ref="ERROR" level="error"/>
        </Logger>
        <Root level="debug">
            <AppenderRef ref="DEBUG" level="debug"/>
        </Root>
        <Root level="info">
            <AppenderRef ref="INFO" level="info"/>
        </Root>
        <Root level="warn">
            <AppenderRef ref="WARN" level="warn"/>
        </Root>
        <Root level="error">
            <AppenderRef ref="ERROR" level="error"/>
        </Root>
    </Loggers>

</Configuration>

所有文件都生成正确,但它们保持为空。 我的主要问题是compareLogger。 如果我在主类中使用它(LogManager.getLogger(“ comparisonLogger”),它将完美地写入日志文件,但是当我尝试在ManagedBean(ViewScoped)中使用完全相同的记录器时,则不会记录任何日志。

有人知道为什么它在我的ManagedBean中不起作用吗? 这与Websphere有关系吗?

我希望任何人都可以提供帮助,因为我完全不知道我可以做些什么。

提前非常感谢

我终于解决了我的问题。

  1. 我在Web应用程序中使用Log4j2,这意味着我需要在web.xml中添加一些内容(此处的更多信息: http : //logging.apache.org/log4j/2.x/manual/webapp.html

  2. 您只能配置一个root记录器

一旦我进行了调整,一切都会按预期进行。

我的Log4j2 Jar文件现在位于我的客户端和我的耳朵中,我的XML配置位于我的客户端中,但是如果拆分配置文件(Web项目中的一部分,另一部分用于C:\\ temp上的客户端,则它也可以工作)其他目录)

您可能需要将log4j2 jar文件和log4j2.xml配置放在一个地方,以便它们始终位于类路径中。

暂无
暂无

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

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