log4j2文件没有写入文件

时间:2015-01-16 15:34:24

标签: java log4j2

我几天来一直在网上搜索,但似乎没什么好处。 我尝试从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>

生成的所有文件都可以,但它们保持空白。 我的主要问题是comparisonLogger。如果我在我的主类中使用它(LogManager.getLogger(&#34; comparisonLogger&#34;),它会完美地写入日志文件)。 但是当我尝试在我的ManagedBean(ViewScoped)中使用完全相同的记录器时,没有任何记录。

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

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

非常感谢

2 个答案:

答案 0 :(得分:2)

我终于弄明白了我的问题。

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

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

  3. 一旦我调整了一下,一切都按预期工作。

    我的Log4j2 Jar-Files现在在我的客户端,我的耳朵和我的XML配置在我的客户端,但如果你拆分配置文件(在我的web项目中的一部分,另一部分在C:上的客户端)它也可以工作临时或其他目录)

答案 1 :(得分:0)

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