Log4j 2是Log4j的升级版,Log4j是一个基于Java的日志记录实用程序,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。
自定义记录整数值到 java 中的 log4j2 jdbc 附加程序
我正在尝试使用 log4j2 在数据库中记录我的事件。具体来说,我在属性配置文件中使用 log4j2 jdbc 附加程序来实现此目的。 这是我的 log4j2 属性中的附加程序...
我正在尝试在 Wildfly 应用程序中使用 json 格式化程序来记录 MDC。 我希望在设置 MDC 值后在每个日志中看到所有 MDC 键及其值。 我不想用
我刚刚完成log4j2.xml配置文件的调整,发现了一些我不太明白的东西。 那么是什么? 几乎全部
在我的 log4j2 配置中,我将 AsyncRoot 设置为 INFO,因为我想在文件中记录此级别及更高级别。 但我还想将错误级别记录到特定文件中并在附录中...
为什么 log4j2 TimeBasedTriggeringPolicy 受到 @Scheduled 的影响
我为log4j2配置了TimeBasedTriggeringPolicy的Policy,希望每天00:00可以将日志文件打包成zip文件。但这并没有发生。 <
我有一个java程序,使用在xml配置文件中配置的log4j2来写入日志。 即使日志为空,我可以继续滚动 log4j2 中的文件吗?我需要使用存档日志生成...
我正在尝试修剪 Log4j2 Core 的 PatternLayout 中的记录器名称。 记录器名称示例: com.test1.test2.test3.test4.test5.ClassName 预期输出: c.t.t.t.t.test5.ClassName 在文档中我只能...
为 com.mongodb.internal.diagnostics.logging.SLF4JLogger 设置记录器不起作用
使用 Spring Boot 运行,我得到这样的日志 c.m.i.d.l.SLF4JLogger :使用驱动程序生成的 ID 3 和服务器生成器的连接在数据库“test”上启动命令“insert”...
如何关闭 com.mongodb.internal.diagnostics.logging.SLF4JLogger?
使用 Spring Boot 运行,我得到这样的日志 c.m.i.d.l.SLF4JLogger :使用驱动程序生成的 ID 3 和服务器生成器的连接在数据库“test”上启动命令“insert”...
我一直在尝试在 Spring 项目中通过 log4j2.xml 让日志记录与基本配置一起使用。尝试了两天,没有成功。该项目似乎忽略了我的 log4j2.xml 文件并选择...
我正在开发一个易受攻击的 Web 应用程序,我正在将其与 Spring Boot 集成以演示 Log4J 漏洞。我的易受攻击的 Web 应用程序可以在 JDK 1.8 上使用我的漏洞利用程序。然而,
解决 Log4j2 配置问题:尽管在 log4j2.xml 中添加 @ConverterKeys({"mask"}) %mask,但应用程序服务器中的数据屏蔽失败
我需要解决应用程序日志配置的紧急问题。我们正在尝试使用 log4j2.xml 文件中 Log4j2 的自定义模式转换器 %mask 来实现数据屏蔽。然而...
Log4j v2 创建日志文件,但不向其中写入任何内容并忽略我的日志级别
问题是我的 Log4J 记录器不会写入文件,尽管它创建了文件(以及目录!),并且启用的级别只是致命错误,尽管我告诉它启用全部。这是我的...
Log4j2 无法在 WebLogic 12.2.1 中工作
我正在尝试在 WebLogic 12.2.1 下运行的 Web 服务中添加 log4j 日志记录,但不知何故日志记录不起作用。 这是WEB-IN中的log4j2.xml
在 osx 下的独立 java 应用程序中使用 log4j 2.0 时,log4j2.xml 中的日期变量无法解析
我在我的独立java应用程序中使用log4j 2。 但是,我在 log4j2.xml 配置中的日期变量上遇到了困难。事情还没有得到解决。 这是我的 log4j2.xml 配置文件: &l...
我有一个 spring MVC 项目(不是 springboot )。我正在尝试使用 MDC 添加用于日志记录的 TraceId(MDC.set("X_REQUEST_ID",uuid.randomuuid().tostring())。现在我添加了代码来设置
如何在log4j2-spring.xml中设置Log Pattern来记录类方法和行
我正在尝试设置日志模式以打印日志文件中的类方法和行。以下是我的配置。它与控制台一起工作正常,但与异步不工作 我正在尝试设置日志模式以打印日志文件中的类方法和行。以下是我的配置。它可以与控制台一起使用,但不能与异步一起使用 <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" monitorInterval="30"> <Properties> <Property name="LOG_PATTERN" value="%d [%thread] [%-5level] [%class{36}.%M %L] [Content-Id:%X{contentId}] [Request-Id:%X{requestId}] [%c{1.}] - %msg%n" /> <Property name="LOG_DIR" value="logs" /> <Property name="SYSTEM_FILE" value="application.log" /> </Properties> <Appenders> <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern="${LOG_PATTERN}" /> </Console> <Async name="Async"> <AppenderRef ref="FileAppender" /> </Async> <RollingFile name="FileAppender" fileName="${LOG_DIR}/${SYSTEM_FILE}" filePattern="${LOG_DIR}/${SYSTEM_FILE}-%d{yyyy-MM-dd}-%i.log"> <PatternLayout> <Pattern>${LOG_PATTERN}</Pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="10MB" /> </Policies> <DefaultRolloverStrategy max="100" /> </RollingFile> </Appenders> <Loggers> <Logger name="com.myproject" level="debug" additivity="false"> <AppenderRef ref="ConsoleAppender" /> <AppenderRef ref="Async" /> </Logger> <Root level="info"> <AppenderRef ref="ConsoleAppender" /> <AppenderRef ref="Async" /> </Root> </Loggers> 我正在使用这个 [%class{36}.%M %L] 模式来记录类方法和行。 感谢您的支持。 在 Java 中检索调用者位置是一项昂贵的操作。它总是需要某种堆栈遍历。 如果一切都是同步的,Log4j 会在需要时延迟检索位置。但如果追加器或记录器是异步的,则必须在跳转线程之前检索位置。对于异步元素,这会使日志记录速度减慢 5 到 20 倍。这就是为什么在这些情况下位置默认被禁用。 您可以使用 includeLocation 属性启用位置: 对于异步附加程序使用: <Async name="Async" includeLocation="true"> <AppenderRef ref="FileAppender" /> </Async> 对于异步记录器(需要额外的依赖项,参见文档)使用: <AsyncLogger name="com.myproject" level="DEBUG" additivity="false" includeLocation="true"> <AppenderRef ref="ConsoleAppender" /> </AsyncLogger> 另一种解决方案(如果您使用的是 Maven)是使用最近发布的 log4j-transform-maven-plugin,它在编译时计算位置,因此不再需要运行时查找并且位置始终可用。只需将其添加到您的 POM 文件中(参见文档): <build> [...] <plugins> <plugin> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-transform-maven-plugin</artifactId> <version>0.1.0</version> <executions> <execution> <goals> <goal>process-classes</goal> </goals> </execution> </executions> </plugin> </plugins> [...] </build> 免责声明:我是log4j-maven-transform-plugin的主要作者。 作为 Piotr 答案的替代方案,我开发了一个插件,能够在构建时检索类和行号并通过 SLF4J 的 MDC 记录它: slf4j-caller-info-maven-插件 您只需: 添加到pom.xml: <build> <plugins> <plugin> <groupId>io.github.philkes</groupId> <artifactId>slf4j-caller-info-maven-plugin</artifactId> <version>1.1.0</version> <executions> <execution> <goals> <goal>inject</goal> </goals> </execution> </executions> </plugin> </plugins> </build> 在您的 %X{callerInformation} 中的任何位置包含 log4j2-spring.xml,在您的示例中: ... <Pattern>%d [%thread] [%-5level] [%X{callerInformation}] [Content-Id:%X{contentId}] [Request-Id:%X{requestId}] [%c{1.}] - %msg%n</Pattern> ... 这同样适用于同步和异步日志记录。 由于该插件在构建期间评估类和行号,因此与 Log4J 的 [%class{36}.%M %L] 相比,没有性能损失。
给定一个日志记录实用程序类,如何通过该类记录所有内容,而不是为每个类创建一个 Logger 对象? 例如,代替: 导入 org.apache.logging.log4j.LogManager; 导入组织。
如何在 Spring application.properties 文件中指定带有日期的日志记录文件
我正在尝试在 application.properties 文件中使用logging.file.name来根据日期记录我的应用程序,但我无法获取当前日期。我努力了 logging.file.name=logs/LogFile.%d{yyyy-MM-dd}.lo...
Log4j2 RoutingAppender 与跨多个线程的 ListAppender
(这是我最初问题的后续问题:Log4j2 Custom Appender in Maven Surefire: possible to Reuse Across Threads?) 我正在尝试对来自 Log4j2 的任何日志记录的输出进行单元测试...