从 log4j 1.2.17 迁移后的 log4j 2.2 问题

     2023-03-30     166

关键词:

【中文标题】从 log4j 1.2.17 迁移后的 log4j 2.2 问题【英文标题】:log4j 2.2 issues after migrating from log4j 1.2.17 【发布时间】:2015-04-02 11:44:48 【问题描述】:

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

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

    %m%dyyyy-MM-dd HH:mm:ss%n 图案布局> 滚动文件>

日志创建是正确的,但是我记录到这个文件的所有内容都没有被缓冲,并且这些行被立即提交。我已经将我的配置与我在其他帖子中看到的其他配置进行了比较,但我看不出有什么问题。

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

线程“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(Thread.java:745) 引起:java.lang.ClassNotFoundException:org.apache.logging.log4j.message.ParameterizedMessage 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) ... 6 更多

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

    使用同步记录器记录到文件时,偶尔会出现奇怪的字符。请参见下文“^[[?1;2c^[[?1;2c”(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 Balancer 测试端口成功启动。

提前致谢。

琼。

【问题讨论】:

我看到您为问题 #3 创建了一个单独的问题。谢谢你。如果已回答,您可以关闭此问题吗? 【参考方案1】:

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

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

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

【讨论】:

感谢您的快速回复 Remko。关于第2点,现在它似乎工作正常,但是关闭Tomcat时出现此消息(可能是正常的):严重:Web应用程序[]似乎已经启动了一个名为[AsyncLoggerConfig-1]的线程,但未能停止它.这很可能造成内存泄漏。关于第 3 点,这里是我的 log4j.xml 的链接:ventusproxy.com/download/log4j.xml。不,当我的应用程序启动时,只有同一个(也是唯一一个)线程正在写入日志。 看来这些奇怪的字符只出现在vproxy_system日志(SYSTEM_LOG appender)中。 抱歉,还有一件事……使用 log4j,我可以用当前日期命名我的目标日志文件。我的意思是,如果今天是 2015-04-04,那么今天的日志文件是 vproxy.2015-04-04。在 00:00,创建了一个名为 vproxy.2015-04-05 的新文件,我的应用程序开始登录它。但似乎这对于 log4j2 是不可能的。我错了吗? 在 fileName 属性值的日期查找中可能需要两个 $$ 字符:fileName="$sys:log.dirvproxy_access.$$date:yyyy-MM-dd" 我已经尝试过了,它创建了一个名为“vproxy_access.$date:yyyy-MM-dd”的文件。

CVE-2021-44228 和 log4j 1.2.17

】CVE-2021-44228和log4j1.2.17【英文标题】:CVE-2021-44228andlog4j1.2.17【发布时间】:2022-01-1621:59:33【问题描述】:我在log4j1.2.17上,我们使用(apache-log4j-extras以及相同的版本)。如果CVE-2021-44228会影响此版本,您能告诉我吗?谢谢【问... 查看详情

Log4j 漏洞 - Log4j 1.2.17 是不是存在漏洞(无法在源代码中找到任何 JNDI 代码)?

】Log4j漏洞-Log4j1.2.17是不是存在漏洞(无法在源代码中找到任何JNDI代码)?【英文标题】:Log4jvulnerability-IsLog4j1.2.17vulnerable(wasunabletofindanyJNDIcodeinsource)?Log4j漏洞-Log4j1.2.17是否存在漏洞(无法在源代码中找到任何JNDI代码)?【发... 查看详情

com.microsoft.azure:applicationinsights-logging-log4j1_2 -- 取决于易受攻击的 log4j:log4j:jar:1.2.17 版本

】com.microsoft.azure:applicationinsights-logging-log4j1_2--取决于易受攻击的log4j:log4j:jar:1.2.17版本【英文标题】:com.microsoft.azure:applicationinsights-logging-log4j1_2--DependsonVulnerablelog4j:log4j:jar:1.2.17version【发布时间】:2021-12-1 查看详情

将 log4j.properties 文件从 Log4j 版本 1 迁移到 2 的合适指南

】将log4j.properties文件从Log4j版本1迁移到2的合适指南【英文标题】:Asuitableguideformigratinglog4j.propertiesfilesfromLog4jversion1to2【发布时间】:2020-12-0721:48:07【问题描述】:我目前正在开发一个专门使用log4j版本1的大型项目(因为它是很... 查看详情

将项目从 log4j 迁移到 slf4j+log4j

】将项目从log4j迁移到slf4j+log4j【英文标题】:migratingaprojectfromlog4jtoslf4j+log4j【发布时间】:2011-07-1310:11:23【问题描述】:我有一个直接使用log4j的大型网络项目,以及许多3rd-party库和日志库的组合。我们的代码库-直接使用log4j。... 查看详情

细说log4j之概述

log4j官网:https://logging.apache.org/ 概述log4j目前存在2个版本:log4j1.x和log4j2.x,目前官方主推2.x版本(log4j1.x已于2015.08.05宣布停止开发,官方建议将1.x升级为2.x版本)。log4j1.x最后一个版本是1.2.17,详见:https://logging.apache.org/log4... 查看详情

java为程序创建日志系统

使用JAVA创建日志系统有两种方法    1.使用log4j操作日志文件    2.使用系统重定向输出日志信息  方法1:使用log4j操作日志文件(可使用jar或者xml)    步骤1:下载log4j.jar        下载地址:http://mirrors.hu... 查看详情

log4j 2 迁移桥 log4j-1.2-api.jar 缺少类

】log4j2迁移桥log4j-1.2-api.jar缺少类【英文标题】:log4j2migrationbridgelog4j-1.2-api.jarmissingclasses【发布时间】:2016-05-2022:34:38【问题描述】:我正在将我们应用程序中的log4j版本从log4j1.2.16升级到log4j2.5。我们有很多依赖项,所以我使用... 查看详情

1.5log4j使用教程

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4... 查看详情

log4j简单用法

maven添加必要库:1<!--https://mvnrepository.com/artifact/log4j/log4j-->2<dependency>3<groupId>log4j</groupId>4<artifactId>log4j</artifactId>5<version>1.2.17</ver 查看详情

将spark默认日志log4j替换为logback

1.将jars文件夹下apache-log4j-extras-1.2.17.jar,commons-logging-1.1.3.jar,log4j-1.2.17.jar,slf4j-log4j12-1.7.16.jar替换成log4j-over-slf4j-1.7.23.jar,logback-access-1.2.1.jar,logback-classic-1.2.1.jar,logback-c 查看详情

在 log4j 1.2 到 log4j 2 的迁移中,如何处理 DailyRollingFileAppender 类?

】在log4j1.2到log4j2的迁移中,如何处理DailyRollingFileAppender类?【英文标题】:Inlog4j1.2tolog4j2migration,whattodowiththeDailyRollingFileAppenderclass?【发布时间】:2015-09-0204:20:16【问题描述】:我正在将一个Java项目从使用log4j1.2进行日志记录迁... 查看详情

log4j入门

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4... 查看详情

log4j配置(代码片段)

1.Log4j1.2.17properties配置1.1准备工作创建maven工程引入log4j的jar包<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>1.2配置文件(properties和xml二选一)log4j.properties#log4j配... 查看详情

log4j使用教程

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4... 查看详情

log4j详细讲解

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4... 查看详情

log4j基本使用方法

一、入门实例1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下2、src同级创建并设置log4j.properties###设置###log4j.rootLogger=debug,stdout,D,E###输出信息到控制抬###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender 查看详情

log4j日志组件的使用

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。1.新建一个Java工程,导入包log4j-1.2.17.jar,整... 查看详情