从log4j 1.2.17迁移后出现log4j 2.2问题



我已从log4j 1.2.17迁移到log4j 2.2。我遇到了以下问题:

  1. 我的AsyncLogger像同步记录器一样工作。这是我对此记录器的配置:

    <RollingFile name="ACCESS_LOG"fileName="${sys:log.dir}vproxy_access。${date:yyyy-MM-dd}"filePattern="${sys:log.dir}vproxy_access。${date:yyyy-MM-dd}"append="true"bufferedIO="true"bufferSize="8192"immediateFlush="false"><模式布局><模式>%m%d{yyyy-MM-dd HH:MM:ss}%n<模式布局><政策/><滚动文件>

    <AsyncLogger name="LOGGER_ACCESS"level="info"includeLocation="true"additionity="false"><AppenderRef ref="ACCESS_LOG"/><异步记录器>

日志创建是正确的,但我记录到该文件的所有内容都没有缓冲,行会立即提交。有人把我的配置和我在其他帖子中看到的其他配置进行了比较,我看不出有什么问题。

  1. 当我关闭应用程序时,现在我收到以下错误:

线程"pool-1-thread-1"java.lang.NoClassDefFoundError:org/apache/logging/log4j/message/ParameterizedMessage中出现异常网址:org.apache.logging.log4j.message.ParameterizedMessageFactory.newMessage(ParameterizedMessageFactory.java:47)网址:org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:737)网址:org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:708)网址:org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:314)网址:org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry.run(DefaultShutdownCallbackRegistry.java:77)在java.lang.Thread.run(线程.java:745)引起原因:java.lang.ClassNotFoundException:org.apache.logging.log4j.message.ParameterizedMessage网址:org.apache.catalina.loarder.WebappClassLoader.loadClass(WebappClassLoader.java:1680)网址:org.apache.catalina.loarder.WebappClassLoader.loadClass(WebappClassLoader.java:1526)…还有6个

当出现此错误时,我不会记录任何内容。最后一行I日志在其相应的日志中正确显示。

  1. 使用同步记录器登录到文件时,偶尔会出现奇怪的字符。请参阅下面的"^[?1;2c^[?2 c"(1.2.17中没有出现这种情况)

2015-04-02 13:58:51正在启动消息服务。。。

^[[?1;2c^[[;1;2c2015-04-02 13:59:06消息服务成功启动。

2015-04-02 13:59:06启动平衡器测试端口。。。

2015-04-02 13:59:06平衡器测试端口成功启动。

提前谢谢。

琼。

  1. 这是预期的行为。后台线程只需跟上应用程序放入队列中的日志事件。请注意,对于log4j2,如果队列为空,异步日志记录将刷新缓冲区,因此结果在磁盘上立即可见。(请参阅FileAppender immediateFlush的文档。)

  2. 您可能需要将log4j web模块添加到您的部署中。这对于清理web应用程序中的log4j资源是必要的,也将禁用关闭挂钩。看见https://logging.apache.org/log4j/2.x/manual/webapp.html

  3. 这个更棘手。。。你能提供完整的log4j2配置吗?有没有可能有两个进程写入同一个文件?

最新更新