0
我已经审查了其他相关的问题,但还没有找到答案。看来在https://logging.apache.org/log4j/extras/apidocs/org/apache/log4j/rolling/RollingFileAppender.html的javadocs不正确和/或不完整。至少该元素看起来有一个虚假的双引号。 我在调试模式下启动,它看起来都很好。但是,我找不到日志文件。我们有其他的定制appender工作正常,但我试图用OTB解决方案替换它们。 这里是我的配置:演员RollingFileAppender没有创建文件
<appender name="file" class="org.apache.log4j.rolling.RollingFileAppender">
<param name="threshold" value="debug" />
<rollingPolicy name="file" class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="logs/My_Server.%d{yyyy-MM-dd-hh}.log"/>
</rollingPolicy>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %r [%t] %-5p %c{1} %x - %m%n"/>
</layout>
</appender>
<appender name="ASYNCfile" class="org.apache.log4j.AsyncAppender">
<param name="BufferSize" value="500"/>
<param name="blocking" value="false"/>
<appender-ref ref="file"/>
</appender>
<root>
<priority value="INFO"/>
<appender-ref ref="ASYNCfile"/>
<appender-ref ref="console"/>
</root>
和调试控制台:
log4j: Attaching appender named [file] to appender named [ASYNCfile].
log4j: Class name: [org.apache.log4j.rolling.RollingFileAppender]
log4j: Setting property [threshold] to [DEBUG].
log4j: Setting property [fileNamePattern] to [logs/My_Server.%d{yyyy-MM-dd-hh}.log].
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d{ISO8601} %r [%t] %-5p %c{1} %x - %m%n].
log4j: setFile called: logs/My_Server.2017-07-17-05.log, true
log4j: setFile ended
我没有看到在控制台输出中与此相关的任何错误 - 就是没有被发现的文件。
其实,我刚刚搜索了我的硬盘驱动器,并找到了一个意外的位置的日志文件。它们位于Eclipse安装目录中。我正在运行tomcat,其他appender正在将日志写入Eclipse添加服务器时创建的tomcat运行时文件夹中。现在,当我没有指定任何我知道的内容时,我需要找出他们为什么要写入两个不同的位置。 (其他人在我之前配置了log4j ...) – Edward
其他相关的帖子指出FileNamePattern值应该是绝对路径。至少在文件的位置不会有任何混淆。 Javadocs在相对时不描述处理这个值。最好的建议可能是使用$ {catalina.base}/logs/yourFileNamepattern。希望这篇文章对别人有帮助。还可以使用log4j配置debug = true标志来帮助排除故障。 – Edward