[英]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有关系吗?
我希望任何人都可以提供帮助,因为我完全不知道我可以做些什么。
提前非常感谢
我终于解决了我的问题。
我在Web应用程序中使用Log4j2,这意味着我需要在web.xml中添加一些内容(此处的更多信息: http : //logging.apache.org/log4j/2.x/manual/webapp.html )
您只能配置一个root记录器
一旦我进行了调整,一切都会按预期进行。
我的Log4j2 Jar文件现在位于我的客户端和我的耳朵中,我的XML配置位于我的客户端中,但是如果拆分配置文件(Web项目中的一部分,另一部分用于C:\\ temp上的客户端,则它也可以工作)其他目录)
您可能需要将log4j2 jar文件和log4j2.xml配置放在一个地方,以便它们始终位于类路径中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.