Log4j 2是Log4j的升级版,Log4j是一个基于Java的日志记录实用程序,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。
LOG4J2可以通过使用MDC密钥作为路由过滤器将某些日志消息路由到指定文件?
我们将Java应用程序连接到多个服务,例如电子邮件,数据库等。
我的 Gradle 配置中有以下内容: 依赖项{ 实现“org.slf4j:slf4j-api:1.7.32” 实现“org.apache.logging.log4j:log4j-slf4j-impl:2.15.0”
我正在 Spring-boot 应用程序中设置 Log4j2。我现在想在 .jar 文件所在的位置创建一个 /log 目录。 当我们从启动脚本启动 java 应用程序时,这是需要的...
JBOSS log4j2-web web.xml 中的 Log4jServletContextListener 读取 log4jConfiguration,无需环境变量替换
从 4.x 春季升级到 5.x 后,我们不得不从 org.springframework.web.util.Log4jConfigListener 到 log4j2-web org.apache.logging.log4j.web.Log4jServletContextListener 和来自
log4j2 无法在 Spring Boot 应用程序中工作
我尝试在 Spring 应用程序中使用 log4j2 而不是 logback,但它不断抛出错误。 pom 文件看起来像 org.springframework.boot...
我使用 Log4j2 来登录我的应用程序,并在日志模式中包含 MDC (ThreadContext) 值来跟踪上下文信息。我当前的日志模式如下所示: 属性.LOG_PA...
在 Log4j2 RollingFileAppender 中使用标记名称
我尝试使用标记的名称作为 RollingFileAppender 的文件名,在 RoutingAppender 内定义,与此示例类似,只是使用 而不是 我尝试使用标记的名称作为 RollingFileAppender 的文件名,在 RoutingAppender 内定义,类似于 这个示例,只不过使用 <RolingFile> 而不是 <File>。这样做的最终目的是每个用户登录应用程序。标记是用户名。 不幸的是,这不起作用。我收到此错误: 2024-12-20T14:59:14.322023700Z userTaskScheduler-2 ERROR Unable to create file \app\logs/${event:Marker}.log java.io.IOException: The filename, directory name, or volume label syntax is incorrect at java.base/java.io.WinNTFileSystem.canonicalize0(Native Method) at java.base/java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:463) at java.base/java.io.File.getCanonicalPath(File.java:626) at java.base/java.io.File.getCanonicalFile(File.java:651) at org.apache.logging.log4j.core.util.FileUtils.makeParentDirs(FileUtils.java:141) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:863) 这是 log4j2 设置: <Properties> <Property name="basePath" value="\app\logs" /> </Properties> <Appenders> <Routing name="ROUTING"> <Routes pattern="$${event:Marker}"> <!--<Route key="DEFAULT" ref="FILE"/>--> <Route> <RollingFile name="${event:Marker}" fileName="${basePath}/${event:Marker}.log" filePattern="${basePath}/${event:Marker}_%d{yyyyMMdd}.log.gz" append="true"> <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | %X{username} | [%marker] | [%t] %C{2} (%F:%L) - %m%n" /> <Policies> <TimeBasedTriggeringPolicy /> <SizeBasedTriggeringPolicy size="10 MB" /> </Policies> </RollingFile> </Route> </Routes> </Routing> </Appenders> 这是Java代码: public class LoggingServiceImpl implements LoggingService { private Map<String, Marker> monitoredUsersMarkers; private Marker DEFAULT = MarkerFactory.getMarker("DEFAULT"); // code to populate markers map @Override public Marker getMarker(String userId) { Marker result = monitoredUsersMarkers.getOrDefault(userId, DEFAULT); return result; } 我研究并查看了之前的问题,但它们没有解决我的问题。 当日志事件具有 no 标记时,您的配置不涵盖这种情况。如果不存在标记,则 ${event:Marker} 占位符不会展开并导致您看到的错误。 为了防止出现此问题,您引用的示例使用了具有默认值${event:Marker:-main}的占位符,如果不存在标记,则该占位符将扩展为“main”。有关更多详细信息,请参阅属性替换。 要解决您的问题,您可以: 为大多数 ${event:Marker} 扩展添加默认值: <RollingFile name="${event:Marker}" fileName="${basePath}/${event:Marker:-main}.log" filePattern="${basePath}/${event:Marker:-main}_%d{yyyyMMdd}.log.gz"> ... </RollingFile> 或者为literal键“${event:Marker}”添加额外的路由。您需要使用 $$ 对其进行转义以防止扩展: <!-- ~ If no marker is present use the appender named `FILE` ~ from the `<Appenders>` container --> <Route key="$${event:Marker}" ref="FILE"/> <!-- Default route --> <Route> <RollingFile name="${event:Marker}" fileName="${basePath}/${event:Marker}.log" filePattern="${basePath}/${event:Marker}_%d{yyyyMMdd}.log.gz"> ... </RollingFile> </Route>
DynamicThresholdFilter 不适用于 Log4j2 中的特定包
我正在尝试在 Log4j2 中应用 DynamicThresholdFilter 来过滤特定包(com.example.orange)的日志。我的目标是仅基于
Log4j2 不加载自定义 ConsoleLogConverter 和 SocketLogResolverFactor 插件
我正在尝试向 Log4j2 添加两个自定义插件:ConsoleLogConverter 和 `SocketLogResolverFactory'。然而,Log4j2 在应用程序启动时不会加载这些插件,尽管事实上...
如何使用 CDK 在 Fargate 中使用 json 日志?
我有一个在 Fargate 中运行的 docker 容器,它使用 log4j-layout-template 或 Springboot ecs 格式的 json 日志将 json 日志发送到控制台。 发出的日志如下所示: {“@时间戳&q...
Apache Spark log4j2.properties 文件不生成日志文件
我尝试在spark 4.0上生成用户定义的日志文件。 操作系统:Windows 11 火花:spark-4.0.0-preview2-bin-hadoop3 首先,我在 %SPARK_HOME 上创建 log4j2.properties 文件
Springboot 与 logback 一起工作,log4j2 工作,但在使用两者时不工作
我在使用 kafka 将日志发送到 log4j2 和 logback 时观察到一个问题。 这是我非常简单的 Springboot 应用程序的代码: @SpringBootApplication 公共类 QuestionApplication { p...
在 Log4j2.properties 上使用带有条件逻辑的环境变量
我使用 Log4j2 和 log4j2.properties 配置文件,并且我依赖环境变量进行某些设置。这是我的配置示例: rootLogger.level = 信息 rootLogger.appender...
我正在运行一个 Spark 程序 scala,我被困在这个特定的场景中,其中带有调试严重性的日志消息没有被打印。 这是我的代码片段 对象测试记录{ @tra...
使用 Log4J2 附加程序将应用程序日志存储在 AWS Cloudwatch 中
我正在尝试将来自 Spark 结构化流应用程序的应用程序级日志存储在 AWS Cloudwatch 日志中 我正在尝试使用以下 github 存储库中的 Log4J2 cloudwatch 附加程序(链接为 ht...
我正在使用 Log4j - 2.22.1。版本和 Wildfly- 31.0.1.Final 记录器在本地打印但是,在 openshift 上部署它时,记录器在部署耳朵后不会打印,我检查了
我正在尝试在 log4j2.xml 文件中创建条件语句,但它似乎不接受任何条件格式。我尝试过各种选项,例如 xslt 等,但似乎没有......
Log4j2 配置 XML 模式不允许 <Route></Route> 块接受嵌套元素
我正在为我的服务器设计一种日志记录机制,其中每个用户都有自己的以员工 ID 命名的日志文件夹,每个文件夹中的日志文件以日期命名。为了实现...