log4j2 相关问题

Log4j 2是Log4j的升级版,Log4j是一个基于Java的日志记录实用程序,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。

解决 Log4j2 配置问题:尽管在 log4j2.xml 中添加 @ConverterKeys({"mask"}) %mask,但应用程序服务器中的数据屏蔽失败

我需要解决应用程序日志配置的紧急问题。我们正在尝试使用 log4j2.xml 文件中 Log4j2 的自定义模式转换器 %mask 来实现数据屏蔽。然而...

回答 1 投票 0

Log4j v2 创建日志文件,但不向其中写入任何内容并忽略我的日志级别

问题是我的 Log4J 记录器不会写入文件,尽管它创建了文件(以及目录!),并且启用的级别只是致命错误,尽管我告诉它启用全部。这是我的...

回答 1 投票 0

Log4j2 无法在 WebLogic 12.2.1 中工作

我正在尝试在 WebLogic 12.2.1 下运行的 Web 服务中添加 log4j 日志记录,但不知何故日志记录不起作用。 这是WEB-IN中的log4j2.xml

回答 0 投票 0

在 osx 下的独立 java 应用程序中使用 log4j 2.0 时,log4j2.xml 中的日期变量无法解析

我在我的独立java应用程序中使用log4j 2。 但是,我在 log4j2.xml 配置中的日期变量上遇到了困难。事情还没有得到解决。 这是我的 log4j2.xml 配置文件: &l...

回答 1 投票 0

MDC 中设置的变量在 log4j2 中无法访问

我有一个 spring MVC 项目(不是 springboot )。我正在尝试使用 MDC 添加用于日志记录的 TraceId(MDC.set("X_REQUEST_ID",uuid.randomuuid().tostring())。现在我添加了代码来设置

回答 1 投票 0

如何在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] 相比,没有性能损失。

回答 2 投票 0

如何记录方法的调用者而不是调用 Logger 的方法

给定一个日志记录实用程序类,如何通过该类记录所有内容,而不是为每个类创建一个 Logger 对象? 例如,代替: 导入 org.apache.logging.log4j.LogManager; 导入组织。

回答 2 投票 0

如何在 Spring application.properties 文件中指定带有日期的日志记录文件

我正在尝试在 application.properties 文件中使用logging.file.name来根据日期记录我的应用程序,但我无法获取当前日期。我努力了 logging.file.name=logs/LogFile.%d{yyyy-MM-dd}.lo...

回答 1 投票 0

Log4j2 RoutingAppender 与跨多个线程的 ListAppender

(这是我最初问题的后续问题:Log4j2 Custom Appender in Maven Surefire: possible to Reuse Across Threads?) 我正在尝试对来自 Log4j2 的任何日志记录的输出进行单元测试...

回答 1 投票 0

Maven Surefire 中的 Log4j2 自定义 Appender:可以跨线程重用吗?

我有一个 Log4j2 自定义附加程序,在我的许多 JUnit5 测试中都使用它。 (就其价值而言,我在几篇文章中发现了该代码,并且只做了一些微小的调整。) 当在 Su 中运行时...

回答 1 投票 0

如何在Log4j2中为不同的记录器配置不同的日志记录级别

我们正在尝试在我们的项目中使用Log4j2。我们想通过属性文件配置 Log4j2。 为了减少日志中的噪音,我们希望将根记录器设置为信息并仅设置调试日志记录...

回答 1 投票 0

如何在 log4j2 中为自定义记录器编写单元测试

我创建了几个自定义记录器,其某些级别覆盖了 Log4J2 中的自定义记录器。我已按照 http://logging.apache.org/log4j/2.x/manual/customloglevels.html 上的指南进行操作。 我需要...

回答 4 投票 0

LOGGER.error(exception.getMessage()) 和 LOGGER.error(exception.getMessage(), exception) 有什么区别

就像这张图一样 我知道它们都工作得很好,但我只是想知道它们有何不同? PS:我是初学者。

回答 1 投票 0

如何确保log4j2与jboss服务器一起工作?

我正在将 log4j 从 v1.2.12 升级到 v2.17.2,以用于在 jboss-esp-7.2 服务器上运行的应用程序。更新依赖项和类后,如果我部署在服务器上,我看到日志不是

回答 1 投票 0

Log4j 正在记录错误(较低)级别的日志

拥有 INFO 级别的根记录器: rootLogger.level=信息 rootLogger.appenderRef.console.ref=ConsoleAppender 以及具有 DEBUG 级别的特定记录器: logger.kinesis.name=org.apache.flink.stream...

回答 1 投票 0

导入org.apache.log4j无法解析

Eclipse、Selenium、Windows 导入org.apache.log4j无法解析 我已遵循我能找到的所有记录步骤,即: 1)以下两个jar文件位于项目构建路径中:

回答 3 投票 0

为什么我的 log4j2 设置被忽略?

log4j2.xml 文件很简单: ...

回答 1 投票 0

如何使用 log4j2 配置 azure databricks

log4j:WARN 无法将属性 [rollingPolicy] 设置为值“org.apache.log4j.rolling.TimeBasedRollingPolicy”。 log4j:警告请为 DatabricksRollingFileAppender 设置滚动策略...

回答 2 投票 0

log4j2 使用 log4j2.properties 文件登录多个文件的策略相同

我正在修改现有的 log4j2.properties 文件以将错误记录到单独的文件中。我的问题是如何重用 SizeBasedTriggeringPolicy、TimeBasedTriggeringPolicy 和 DefaultRolloverStrategy

回答 1 投票 0

来自云配置的 JsonTemplateLayout eventTemplateUri

我已将我的应用程序配置为使用 log4j2 配置以 JSON 形式记录: 配置: 状态:警告 附加器: 安慰: 名称: 控制台 目标:SYSTEM_OUT JsonTemplate...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.