log4j 相关问题

log4j是一种流行的基于Java的日志记录实用程序。它是Apache Software Foundation的一个项目,并根据Apache软件许可证2.0版获得许可

Log4j2 在 apender 中过滤特定级别

我应该使用什么过滤器来定义要使用附加程序记录的特定级别?例如: 爪哇: LOGGER.debug("调试消息"); LOGGER.info("信息消息"); 记录器.警告(“...

回答 7 投票 0

无法加载 log4j.properties 文件

我正在尝试加载 Log4j 记录器的特定设置。代码适用于 1.2.17 版本。现在版本 2.21.1 不会加载文件,而是加载“默认”设置。 我是

回答 1 投票 0

通过 JVM 参数配置 Log4j?

我必须设置/传递哪些变量作为 JVM 的参数才能使 Log4j 正常运行?我所说的正确是指不要抱怨并打印到控制台。我可以看一个典型的例子吗? 注意:我需要

回答 11 投票 0

如何在命令行上设置log4j级别?

我想向我正在处理的类添加一些 log.debug 语句,并且我希望在运行测试时在输出中看到它。我想在命令行上覆盖 log4j 属性,使用一些...

回答 8 投票 0

为什么Maven更新时自动下载Log4j 1.2.16

我正在做一个JAVA Maven项目,主要是使用logback和slf4j进行配置。我在 Maven 依赖关系树中看不到任何 Log4j 依赖关系,这意味着 Log4j 不是传递性地来自...

回答 1 投票 0

Log4j2 未读取配置文件

请友善,我是日志记录的新手,即使在尝试了很多事情并完全按照文档进行操作之后,我还是遇到了 log4j2 的一些问题。 我花了整个早上的时间来尝试

回答 1 投票 0

log4j - log4j 核心更新

我已将 log4j 版本从 1.2.17 更新到 log4j-core-2.17.1,这是为了修复 log4jshell 漏洞。 在构建代码时,我遇到找不到 PatternLayout 和 ConsoleAppender

回答 2 投票 0

从 log4j v1 迁移到 log4j v2

我想提前指出,我不是JAVA开发人员(我是前端开发人员),这就是我开始这个查询的原因。 我们客户的 Java 应用程序是用 J2SE 1.4 编译的....

回答 2 投票 0

log4j 1.2.12 依赖项显示在编译日志中,但不在 mvn 依赖关系树中

我正在尝试编译该产品,它下载了 log4j 1.2.12 版本。 当我尝试查看如何使用 mvn dependency:tree 添加它时,它没有显示。 在编译日志中,它说如下: [...

回答 1 投票 0

即使 StaticLoggerBinder 位于 Maven-Rep 中,也无法加载类 org.slf4j.impl.StaticLoggerBinder

我正在尝试使用 slf4j-Logger-Functions 但总是遇到相同的错误: SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。 SLF4J:默认为无操作(NOP)日志...

回答 3 投票 0

log4j2 - Syslog 附加程序和 PatternLayout

我需要将事件记录到系统日志中。 我使用 lo4j2 和 syslog 附加程序。 log4j2.xml 中的附加程序块如下所示: 我需要将事件记录到系统日志中。 我使用 lo4j2 和 syslog 附加程序。 我的 log4j2.xml 中的附加程序块看起来像这样: <appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> <Syslog name="syslog" host="localhost" port="514" protocol="UDP" charset="ISO-8859-1"> </Syslog> <RollingFile name="AppLog" fileName="/var/log/app.log" filePattern="/var/log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> <Policies> <TimeBasedTriggeringPolicy/> </Policies> </RollingFile> </appenders> 如您所见,我有一个具有特定 PatternLayout 的 Console Appender 和 RollingFile Appender。 我想对 Syslog 附加程序使用相同的 PatternLayout。 但是,系统日志中的日志消息似乎始终使用预定义的布局。 我尝试执行以下操作: <Syslog name="syslog" host="localhost" port="514" protocol="UDP" charset="ISO-8859-1"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Syslog> 但这没有任何效果。系统日志消息仍然具有相同的预定义格式。 如何确定进入系统日志的日志消息的格式? 正如本 log4j2 bug 报告中提到的,log4j2 的开发人员将 SyslogAppender 编码为 SocketAppender 硬连线到 SyslogLayout 因为它旨在符合原始系统日志格式或 RFC 5424。不应允许任何其他布局。 不幸的是,他们没有意识到 RFC 5424 规范并未对日志中包含的消息强制执行任何特定格式,在 Log4j2 实现中仅是日志的 %m 部分。 为了解决这个问题,一个解决方案(在同一个错误报告中建议)是在 SocketAppender 内使用 PatternLayout 重现 syslog 格式,就像这样 <Socket name="SYSLOG" host="localhost" port="514" protocol="UDP"> <PatternLayout pattern="&lt;1&gt;%d{MMM dd HH:mm:ss} ${hostName} appName: { &quot;host&quot;:&quot;${hostName}&quot;, &quot;thread&quot;:&quot;%t&quot;, &quot;level&quot;:&quot;%p&quot;, &quot;logger&quot;:&quot;%c{1}&quot;, &quot;line&quot;:%L, &quot;message&quot;:&quot;%enc{%m}&quot;, &quot;exception&quot;:&quot;%exception&quot; }%n" /> </Socket> 这将通过 UDP 将格式良好的 RFC5424 日志写入本地 514 端口。以下是示例日志输出: Sep 14 10:40:50 app-hostname app-name: { "host":"host-name-01", "thread":"http-nio-8080-exec-4", "level":"DEBUG", "logger":"ExecuteTimeInterceptor", "line":52, "message":"GET &#x2F;health 200 served in 3", "exception":"" } 我不相信您可以在基本 Syslog 附加程序上使用模式。 从文档中可以看出 “SyslogAppender 是一个 SocketAppender,它将其输出写入由主机和端口指定的远程目标,格式符合 BSD Syslog 格式或 RFC 5424” http://logging.apache.org/log4j/2.x/manual/appenders.html#SyslogAppender 但是,它确实允许您指定“format = RFC 5424” 如果您使用 RFC 5424 然后你可以在loggerFields参数中放置一个PatterLayout。 请参阅http://logging.apache.org/log4j/2.x/manual/layouts.html#RFC5424Layout 希望有帮助! 您可以使用 LoggerFields 标签向 RFC5424 格式的 SyslogAppender 消息添加其他元素,如下所示: <LoggerFields> <KeyValuePair key="thread" value="%t"/> <KeyValuePair key="priority" value="%p"/> <KeyValuePair key="category" value="%c"/> <KeyValuePair key="exception" value="%ex"/> </LoggerFields> 然后我使用 rsyslog 的 RFC5424 解析模块 mmpstrucdata 将它们拉出,以创建 json 树。用于访问它们的 rsyslog.conf 模板如下所示: template(name="jsondump" type="string" string="'%$!rfc5424-sd!mdc@18060!thread%', '%$!rfc5424-sd!mdc@18060!priority%', '%$!rfc5424-sd!mdc@18060!category%', '%$!rfc5424-sd!mdc@18060!exception%'") 我只是想做同样的事情,并认为我会分享对我有用的东西。 - 萨姆 您可以使用 SocketAppender 和 PatternLayout 来格式化 syslog (syslog-ng) 消息。 为了使用固定设施支持动态严重性(例如:“用户级消息” - 请参阅RFC5424),模式应如下所示: <Socket name="SYSLOG" host="${env:INTERFACE}" port="514" protocol="UDP"> <PatternLayout pattern="&lt;%level{TRACE=15, DEBUG=15, INFO=14, WARN=12, ERROR=11, Fatal=11}&gt;%replace{${env:APPLICATION_NAME}}{\r}{}[%X{PID}] %t(%T) %c{10} - %m%n"/> </Socket> 要计算设施“用户级消息”和严重性“信息消息”的优先级值 (PRIVAL) - 请参阅 RFC5424 - 以下示例可能有所帮助: Syslog: Facility | Severity Numerical Code: 1 6 Bin: 0 0 0 0 1 | 1 1 0 Dec: 8 + 6 = 14 log4j2syslog-ngsocketappenderpatternlayout 我使用butcher82发布的配置,但必须对其进行一些更改才能产生我需要的结果。 我最终得到的是一条具有正确优先级、时间戳(几天前没有前导零)、主机和消息部分的消息。 syslog 和 log4J 级别之间的映射按照 org.apache.log4j.Level 中的定义使用,并且设施设置为 1(用户级消息),以简化优先级计算。 此模式应与 RFC-3164 兼容: <Socket name="SysLogAppender" host="localhost" port="514" protocol="UDP"> <PatternLayout pattern="&lt;%level{TRACE=7, DEBUG=7, INFO=6, WARN=4, ERROR=3, Fatal=0}&gt;%d{MMM d hh:mm:ss} ${hostName} %m%n"/> </Socket> 以下是生成的输出: <3>Dec 15 09:59:16 foo.bar.hostname this is a test message 注意: 可以在主机名后添加应用程序名称或 pid。

回答 5 投票 0

如何正确关闭 Log4j,关闭所有 Appender,从而关闭文件

我的基于 servlet 的 Web 应用程序有时在重新部署时无法关闭 Log4j 日志文件,导致文件描述符泄漏,并且偶尔会导致包含 servlet 的程序因“打开文件过多”而死亡...

回答 2 投票 0

Log4j 单例包装器的好处?

我最近继承了一些Java代码,需要将其集成到我正在开发的项目中。我的项目是一个处理和转换 XML 消息的服务代理。在寻找的同时...

回答 4 投票 0

如果我执行“作为 Java 应用程序运行”,则会出现错误 -“ERROR StatusLogger Log4j2”

如果我使用“作为 Java 应用程序运行”运行我的测试/java 类,则会出现以下错误 - “错误 StatusLogger Log4j2 找不到日志记录实现。请将 log4j-core 添加到

回答 1 投票 0

如何在Java Web应用程序中生成带有数值的JSON日志?

我需要为 Spring Boot 应用程序添加 JSON 日志,该应用程序配置为使用 SLF4J 和 Log4j2 进行日志记录。除了常规日志事件属性(如消息、日志记录级别、时间戳等)

回答 1 投票 0

log4j 警告:找不到记录器的附加程序(org.apache.kafka.clients. Producer.ProducerConfig)

我正在编写一段代码,尝试使用 kafka 和 SBT 生成消息。它可以编译,但是当使用 SBT 运行时,出现此错误。 log4j:WARN 找不到记录器 (org.apache.

回答 1 投票 0

Spring Boot 跟踪执行器正在记录出站请求中包含密码的 HTTP 正文

MultiValueMapmap = new LinkedMultiValueMap(); map.set("用户名", "user1"); map.set("密码", "通过...

回答 1 投票 0

如何查找log4j桥中缺少哪些log4j类

我正在开发一个项目,该项目使用大量使用 log4j 的遗留库。我想知道 log4j 的所有类都在桥中支持(无操作类很好,我最关心的是......

回答 1 投票 0

异步任务日志中TraceId和Span为空

我在 springboot 中有一个 REST 端点,它使用 CompleteableFuture 调用外部 api 异步多个。在Completeablefuture.supplyAsync(() =>

回答 1 投票 0

Log4j 1.x 到 2.x 的 JDBCAppender 迁移

我正在尝试将应用程序从 log4j v1.2 迁移到 v2.17。在该应用程序中,他们通过导入在 Java 中使用 JDBCAppender,并将其扩展为一个类并执行一些操作。 嗬...

回答 1 投票 0

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