log4j2 相关问题

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

如何理解我们应用程序中的日志记录

我们的应用程序使用, 对于普通日志记录 (.log):log4j2 由 log4j-core.jar、log4j-api.jar、log4j2-extensions.jar 支持 对于控制台日志记录(.out):log4j(1.2),因为我们有使用l的jboss...

回答 1 投票 0

JsonTemplateLayout (log4j2) 无法从 LogEventPatternConverter (log4j2) 解析 ConverterKey

问题:ConverterKey 未得到解决 我想用 JsonTemplateLayout (来自 log4j2)替换我的 json-log-converter EcsLayout (来自 elastic)。 但我有这个问题,ConverterKey-Variab...

回答 1 投票 0

具有多个附加程序的 Log4j2 未写入控制台

我有一个 log4j2.XML 如下: 我有一个 log4j2.XML 如下: <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="ConsoleAppender" target="SYSTEM_OUT"> <PatternLayout pattern="%date %-5level %logger - %msg"/> </Console> <Kafka name="KafkaAppender" topic="cdf-databricks-log"> <JsonTemplateLayout eventTemplateUri="classpath:JsonLayout.json"> <EventTemplateAdditionalField key="info" format="JSON" value='{"$resolver": "map"}' /> </JsonTemplateLayout> <Property name="bootstrap.servers">${env:KAFKA_HOST}:${env:KAFKA_PORT}</Property> <Property name="security.protocol">SASL_SSL</Property> <Property name="sasl.mechanism">PLAIN</Property> <Property name="sasl.jaas.config">org.apache.kafka.common.security.plain.PlainLoginModule required username="${env:KAFKA_USER}" password="${env:KAFKA_PASSWD}";</Property> </Kafka> <Async name="AsyncAppender"> <AppenderRef ref="KafkaAppender"/> </Async> </Appenders> <Loggers> <Root> <AppenderRef ref="ConsoleAppender" level="ALL"/> <AppenderRef ref="KafkaAppender" level="INFO"/> </Root> <!-- Do not let org.apache.kafka log to a Kafka appender on DEBUG level. That will cause recursive logging --> <Logger name="org.apache.kafka" level="WARN" /> </Loggers> </Configuration> 我希望所有日志都定向到控制台,仅将 INFO 日志定向到 Kafka。 当我使用该应用程序时,我没有看到日志被写入控制台。 我发现根据类/包名称编写专用记录器节点(如下所示)是有效的。但我需要使 Log4j2.xml 成为可重用的组件,这就是为什么我不希望此处出现单独的类名。 <Logger name="com.abc.xxx.Someclassname" level="INFO" additivity="false"> <AppenderRef ref="ConsoleAppender"/> <AppenderRef ref="KafkaAppender"/> </Logger 我在第一个 log4j2.xml 中出错的地方有什么建议吗? 您没有指定根记录器的级别,因此应用默认的ERROR,您的配置相当于: <Root level="ERROR"> <AppenderRef ref="ConsoleAppender" level="ALL"/> <AppenderRef ref="KafkaAppender" level="INFO"/> </Root> 为了记录消息,必须至少与配置的记录器的级别和附加程序引用的级别一样具体(参见过滤)。例如,如果来自 com.example 记录器的日志必须具有 ERROR 或更高级别才能最终进入 Kafka(记录器级别:ERROR,附加程序引用级别:INFO)。来自 org.apache.kafka 附加程序的日志事件仅需要 WARN 级别(记录器级别:WARN,从根记录器继承的附加程序引用级别:INFO)。 更改根记录器的级别应该可以解决您的问题。

回答 1 投票 0

SLF4J2 和 Log4J1 到 Log4J2

我一直在为记录器依赖项摸不着头脑。我希望我自己的代码使用 SLF4J 2 API,并在测试和运行时使用 Log4J2 作为提供程序。但是,我依赖 OpenLr 的二进制文件

回答 1 投票 0

LOG4J2 显示 Hibernate 日志和开发中的我的日志,但仅显示来自已安装 MSI 的 Hibernate 日志(JavaFX 22 使用 Maven 和 jpackage for MSI)

我的 LOG4J2 日志在开发中可见,但在生产中通过 MSI 安装应用程序时不再可见。 两种情况下都会记录 Hibernate 日志,并且记录在正确的文件中(路径为

回答 1 投票 0

多 Pod 云环境 Spring Boot 应用程序在运行时更改日志级别

我有一个使用 spring boot + log4j2 的应用程序在超过 2 个 pod 的 openshift 上运行。 然而,我们的日志配置在 sprint 启动初始化后发生了变化,我的意思是,重新配置。所以,我不我们...

回答 1 投票 0

使用 log4j2 格式的 Hibernate show-sql 日志

我已经配置了 spring.jpa.show-sql: true 所以控制台日志看起来像这样: 2024-04-20 16:02:01.031 | http-nio-9001-exec-1 | http-nio-9001-exec-1 |信息| org.springframework.web.servlet.DispatcherServlet | |初始化...

回答 1 投票 0

当某些日志属性基于添加到threadcontext的数据时,如何避免在log4j2中打印“contextMap”

我想以 log4j2 Json 格式记录 2 个自定义字段,其中一个具有固定值,另一个来自 ThreadContext。我正在使用 JsonTemplateLayout 来打印日志属性。哈...

回答 1 投票 0

如何让JBoss不影响我自己的log4j2设置?

我在多个项目上使用 Log4j2(2.17.1) 和两种类型的配置(log4j.prop 和 log4j2.xml)。我的应用程序的 log4j2 在读取外部 log4j 配置时可以在 Tomcat 9 上正常工作。但不知怎的,它...

回答 3 投票 0

如何使用 JsonLayoutTemplate 仅当 ThreadContext 中存在值时才打印 log4j2 json 属性

我想以 log4j2 Json 格式记录 2 个自定义字段,其中一个具有固定值,另一个来自 ThreadContext。我正在使用 JsonTemplateLayout 并希望打印该字段...

回答 1 投票 0

以编程方式从 Log4j2 XML 配置获取属性

在我的 Log4j2 配置文件中,我有以下内容: ...

回答 2 投票 0

Log4j2 日志记录到文件和控制台的非常简单的应用,其中不需要控制台日志记录

我非常简单的Java应用程序记录到文件附加器和控制台附加器,其中我只定义了一个文件附加器。 这是我的 log4j2.properties 文件: 附加器.file.type = 文件 附录...

回答 1 投票 0

Log4j OnStartupTriggeringPolicy 为什么要检查文件时间戳?

和/或“如何安全地处理 RollingFileAppender TriggeringPolicy 中的上下文?” 我遇到 OnStartupTriggeringPolicy 无法实现其既定目的的问题 触发

回答 1 投票 0

在配置级别log4j中设置debug=“false”的目的

在log4j.xml中设置配置级别属性的目的是什么? log4j.xml中配置级别设置属性的目的是什么? <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false" threshold="info"> 在 log4j 1.x 以及 logback 中,debug="true" 指令可以将消息internal 显示到日志记录库。 debug="true"指令与记录器上的设置级别无关。 在 logback 中,这些内部消息称为 状态消息。另请参阅下面几段的“简写”部分。

回答 1 投票 0

Log4j2.xml 中的 RegexFilter 未按预期过滤日志

我似乎无法让 RegexFilter 工作。我已设置 log4j2.xml 文件如下: 我似乎无法让 RegexFilter 工作。我已按如下方式设置 log4j2.xml 文件: <Console name="prodOutput" target="SYSTEM_OUT"> <PatternLayout pattern="[%d] [Org Utility] -- [ITEM1=%X{ITEM1} ITEM2=%X{ITEM2} ITEM3=%X{ITEM3} USERID=%X{USERID} ENV=%X{ENV}]- [%t] %-5p %c %x - %m%n"/> <Filters> <RegexFilter regex=".*ENV=local.*" useRawMsg="false" onMatch="DENY" onMismatch="NEUTRAL"/> </Filters> </Console> <Loggers> <!-- switch off log output from these packages --> <Logger name="orgName.package1" level="debug" additivity="false"> <appender-ref ref="prodOutput"/> </Logger> <!-- retain log output for other packages --> <Logger name="orgName" level="trace" additivity="false"> <appender-ref ref="${sys:logger.out.type}"/> </Logger> <Root level="info" additivity="false"> <appender-ref ref="${sys:logger.out.type}"/> </Root> </Loggers> 这是我们的日志输出的示例,但不知何故,此包中的日志orgName.package1没有获取正则表达式,因为我仍然可以在控制台中看到此包中的日志。 [2023-01-03 12:41:56,353] [Org Utility] -- [ITEM1=XX ITEM2=XX ITEM3=XX USERID=@ADMIN ENV=local]- [ForkJoinPool-1-worker-29] DEBUG orgName.executeRule [] ... 因为当我用简单的 .* 替换正则表达式时,包 orgName.package1 的输出不会显示在控制台中。 ENV中ThreadContextMap的值为local,所以我期望日志输出为... ENV=local ...并且确实如此,如控制台中所示。但正则表达式不知何故没有检测到此日志。 是否有我遗漏的设置或配置?或者也许我写错了正则表达式?但我在 regex101.com 上仔细检查了我的正则表达式,并且我编写的测试用例通过了,这是一个样本。 我明白为什么 RegexFilter 不起作用,这是因为我试图在记录器上应用正则表达式而不是消息。 RegexFilter旨在对messages应用正则表达式,即仅使用PatternLayout转换模式在%m中定义的部分,而不是与记录器相关的详细信息(类型、时间、包) ,类名等)。 示例 这是log4j2.xml文件中的模式定义: <PatternLayout pattern="%d{ISO8601} %p %C.%M - %m%n"/> 这是一个示例日志: 2024-03-28T05:40:30,667 INFO com.example.Foo.doSomething - This is a log message 因此,使用 <RegexFilter> 您只能定位 消息,在本例中为: 这是一条日志消息 仅检查这部分是否匹配。 我引用了这个 StackOverflow post,它与我的问题非常相似。 希望这对任何遇到此问题的人都有帮助,干杯!

回答 1 投票 0

过滤掉与Log4j2中的两个过滤器匹配的消息

我正在运行一个 Java 应用程序,它使用 log4j2.xml 来配置日志记录。我想删除消息中包含特定字符串并且还具有特定 MDC 密钥的消息。 如果我指定...

回答 1 投票 0

抑制 org.apache.zookeeper.ZooKeeper 的 Log4j 输出

我正在构建一个将利用 org.apache.zookeeper.ZooKeeper 的测试驱动程序。该库正在将嘈杂的输出转储到我想要控制或抑制的控制台。 我试图创造...

回答 1 投票 0

错误 StatusLogger 重新配置失败:在“null”中的“null”处找不到“73d16e93”的配置

我使用的是log4j2,jar文件如下: log4j-api-2.14.0.jar log4j-core-2.14.0.jar log4j-slf4j-impl-2.14.0.jar 执行以下行: LogManager.getLogger("com.foo.Bar1"); 你...

回答 5 投票 0

带有 log4j2 的 SpringBootApplication 在启动时抛出错误

我使用 springboot 的属性配置了 log4j2.yml: 特性: 财产: - 名称:LOGSTASH_HOST 值:${spring:logstash.server.host} - 名称:LOGSTASH_PORT 维...

回答 1 投票 0

在 Spring Boot 3.2.0 中使用 Micrometer 设置启用 Log4j2 后,日志中缺少相关 ID

我最近在 Spring Boot 3.2.0 应用程序中实现了 Micrometer 设置,以增强跟踪和指标收集,效果很好。然而,在启用 Log4j2 来改进日志记录后,我注意到...

回答 1 投票 0

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