Log4j 2是Log4j的升级版,Log4j是一个基于Java的日志记录实用程序,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。
ThreadContext.put() 和 MDC.Put() 有什么区别?
我想知道ThreadContext.put和MDC.put之间的区别,因为我相信两者执行相同的操作。
我正在尝试让 log4j 以 json 格式记录具有特定字段的消息。日志记录必须遵循一个规范。 log_fmt.json { “姓名”: { "$resolver": "地图&quo...
是否可以使用 XML 配置中的规范以编程方式添加 Log4J2 附加程序? 我计划在 log4j2.xml 中定义所有内容,然后根据情况选择附加程序...
将 Spring boot WS 部署到 JBoss EAP 8 时遇到“协议 vfs 尚未启用为允许的协议”错误
我正在开发一个 Spring Boot(3.3.5) Web 服务,使用 log4j2 作为我的日志库。我从 spring 初始化程序生成了一个 spring boot 项目,排除了从 web 模块到 exc 的日志记录...
我正在尝试为此处描述的 log4j2 设置 json 日志记录: https://logging.apache.org/log4j/2.x/manual/json-template-layout.html 但是,输出的格式与我的期望不符。 ...
Log4j2 asyncLogger 在应用程序日志文件中缺少日志事件
我在我的Java应用程序中使用Log4j2的AsyncLogger,该应用程序部署在Kubernetes环境上。该应用程序还配置了 New Relic Java 代理,我可以看到日志事件…
java.lang.NoSuchMethodError:org.apache.logging.log4j.util.PropertiesUtil.getStringProperty()
我在启动 Tomcat 服务器时遇到以下异常。 这似乎是一个 log4j 异常。我刚刚将 Struts 版本从 2.5.20 升级到 2.5.22。 Log4j-api-2.12.1 和 log4j-core 是 2.13.2。
我在启动 Tomcat 服务器时遇到以下异常。 这似乎是一个 log4j 异常。我刚刚将 Struts 版本从 2.5.20 升级到 2.5.22。 Log4j-api-2.12.1 和 log4j-core 是 2.13.2。
log4j2的JsonLayout中有没有办法限制message值的字符?当前的配置是这样的 log4j2的JsonLayout中有没有办法限制message值的字符?目前的配置是这样的 <Console name="CONSOLE_APPENDER" target="SYSTEM_OUT"> <BurstFilter level="INFO" rate="2" maxBurst="10"/> <JsonLayout compact="false" eventEol="false" stacktraceAsString="true"> <KeyValuePair key="timestamp" value="$${date:yyyy-MM-dd'T'HH:mm:ss.SSSZ}" /> <KeyValuePair key="BuildNumber" value="$${ctx:BuildNumber:-}"/> </JsonLayout> </Console> 据说 JsonLayout 已被弃用,所以我们使用 JsonTemplateLayout 来代替
我在 Java 应用程序中使用 kafka-clients 库,并且日志没有附加到我在 log4j2.xml 中指定的 kafka 日志中。但是,org.springframework.kafka 日志是
Spring Boot 的 log4j2 中没有为组件属性提供 type 属性
我已经实现了一个简单的应用程序,用于将日志流式传输到apache kafka。在生产者中,我已经实现了 log4j2.xml 文件用于配置,现在我必须将 .xml 文件转换为属性...
我正在运行一个我的世界服务器,一些插件不断向控制台发送垃圾邮件(因此使其毫无用处),内容如下: com.mojang.brigadier.exceptions.CommandSyntaxException 我想摆脱
Log4j2:是否可以实现 StrLookup 重新计算每个日志事件的返回值?
我想使用 StrLookup 接口将变量的当前值打印到 log4j2 记录的每条消息中。我想最简单的方法是直接将其插入到
Log4j 从 2.23.1 更新到 2.24.0/1 -> 日志记录消失了
我有一个又大又旧的遗留项目,我们非常痛苦地更新到 log4j 2,并且使用了很多桥梁。 我有一个又大又旧的遗留项目,我们非常痛苦地更新到 log4j 2,并且使用了很多桥梁。 <!-- LOGGING --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j2-impl</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${slf4j.version}</version> </dependency> slf4j版本是2.0.16 log4j 2.24.0 的发行说明中是这样的文字: 桥梁 JUL-to-Log4j API 和 Log4j 1-to-Log4j API 将不再 可以修改Log4j Core默认的配置。如果这样的话 需要某个功能,必须显式启用它。 从 2.23.1 更新到 2.24.0 或 2.24.1 后,日志记录消失了。 我在文档中没有找到任何有关如何启用此桥接功能的提示。 注意: log4j-1.2-api 和 log4j-jul 的“桥接”功能在 2.24.0 中并未禁用。这些桥仍然开箱即用,可将使用 Log4j 1 或 java.util.logging 编写的日志语句转发到 Log4j 2 API。 被禁用的是使用这些旧版 API 加载和修改日志记录实现的配置的能力。其背后的基本原理是,许多legacy库通过调用j.u.l.Logger.setLevel()或org.apache.log4j.PropertyConfigurator.configure()等方法来破坏用户配置。由于无法修改这些遗留库,因此桥接器的“配置”部分成为选择加入。 问题的可能原因 许多应用程序和库(可能包括您的应用程序和库)都包含与此类似的代码片段: org.apache.log4j.PropertyConfigurator.configure( Main.class.getClassLoader().getResourceAsStream("log4j.properties")); 自从 Log4j 1.0 的第一个稳定版本已经自动加载 log4j.properties 文件并允许用户使用 log4j.configuration 系统属性指定备用位置以来,从未需要过这样的代码片段。此类片段应被删除并替换为以下选项之一: 以本机 Log4j 2 Core 配置格式之一编写配置文件,并将其放置在类路径上的标准位置之一中。这是推荐的方式。 以 Log4j 1 格式编写配置文件并将 log4j.configuration 系统属性指向它。如果您有很多用户并且不想强迫他们使用 Log4j 2 格式,则此选项可能很有用。如果您是唯一配置日志记录的人,则更容易切换到您选择的本机格式。 以 Log4j 1 格式编写配置文件并将 log4j1.compatibility 系统属性设置为 true。 直接在代码中使用 o.a.l.l.core.config.Configurator。 如果您确实想保留代码片段(我不建议这样做),您应该将 log4j1.compatibility 系统属性设置为 true。
当日志级别设置为 DEBUG 时,aws sdk java 2.x 正在打印必要的文件内容
我们有一个 quarkus 应用程序,它公开 api 端点以接收包含文件的请求并将文件上传到 S3 存储桶。 当应用程序根日志级别设置为 DEBUG 且请求为
我已经阅读了这个问题Limit max message size in log4j2 pattern。 我使用 %.-1000m 来限制消息事件中的字符数。 由于某种原因,这没有效果。 我已经读过这个问题Limit max message size in log4j2 pattern。 我使用 %.-1000m 来限制消息事件中的字符数。 由于某种原因,这没有效果。 <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Properties> <Property name="log-path">${sys:root}/var/output/logs</Property> </Properties> <Appenders> <Socket name="ApplicationTcp" host="localhost" port="5170" ignoreExceptions="false"> to reduce logging volume. --> <Pattern>{ "timestamp": "%d{ISO8601}", "logger": "%c","threadName": "%t"%notEmpty{, "requestId": "%X{RequestId}"}%notEmpty{, "message": "%enc{%.-1000m{nolookups}}{JSON}"}%notEmpty{, "exception": "%enc{%ex{full}}{JSON}"} }%n</Pattern> </PatternLayout> </Socket> ... </PatternLayout> </Socket> </Appenders> 我尝试更改 %m 的各种值,但没有效果。 我在本地测试了您的模式(使用版本2.24.1)并且%.-1000m工作正常!你计算的尺寸正确吗?这仅限制“消息”键的大小(例外情况,通常较长,不受限制)。该限制在 JSON 编码之前应用,因此有效字符数可能会更长。 备注:即使您的示例正确运行(假设您将 alwaysWriteExceptions 设置为 false),您也应该考虑切换到 JSON 模板布局。 Pattern Layout 的目的不是输出结构化格式,而是文本。在某些您没有转义的字段(例如线程名称)中,一个简单的LF将会破坏您的输出。而不是玩火: 将 log4j-layout-template-json 添加到您的依赖项,如 Usage, 中所述 使用等效的 JTL 配置并将 maxStringLength 配置属性 设置为您喜欢的值: <JsonTemplateLayout maxStringLength="500" eventTemplate=' { "timestamp": { "$resolver": "timestamp", "pattern": { "format": "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "timeZone": "UTC" } }, "logger": { "$resolver": "logger", "field": "name" }, "threadName": { "$resolver": "thread", "field": "name" }, "requestId": { "$resolver": "mdc", "key": "requestId" }, "message": { "$resolver": "message" }, "exception": { "type": { "$resolver": "exception", "field": "className" }, "message": { "$resolver": "exception", "field": "message" }, "stackTrace": { "$resolver": "exception", "field": "stackTrace" } } }'/>
Apache Log4j 2.17 版本:错误 StatusLogger 重新配置失败:在“null”中的“null”处找不到“277050dc”的配置
我在我的java项目中使用Apache Log4j,在gradle中: API“org.apache.logging.log4j:log4j-api:2.17.0” API“org.apache.logging.log4j:log4j-core:2.17.0” 我更新了 Log4j 版本...
(带有 Log4j2 的 Springboot Gradle,可执行 Jar)无法找到或加载主类
当我使用 java -jar .\QuartzScheduler-0.0.1-SNAPSHOT.jar 执行 jar 时遇到以下错误 错误:无法找到或加载主类 com.quartz.QuartzSchedulerApplication 原因是:...
登录Log4j2 NoSQL MongoDB Appender前如何修改MongoDB文档?
我使用 Log4j2 和 MongoDB NoSQL 附加程序将日志发送到 MongoDB 数据库。附加器工作正常,日志作为文档存储在 MongoDB 中。不过,我想
我正在尝试在android中实现log4j,在gradle中使用v2.24.1依赖项: 实现 'org.apache.logging.log4j:log4j-api:2.24.1' 实现 'org.apache.logging.log4j:log4j-core:2.24....