当前位置: 首页 > 面试题库 >

在log4j中使用MDC动态命名日志文件

邵崇凛
2023-03-14
问题内容

是否有可能在运行时使用MDC命名日志文件

我有一个单独的Web应用程序,该应用程序同时使用tomcat docbase被不同的名称调用。因此,我需要为每个文件设置单独的日志文件。


问题答案:

这可以在Logback(Log4J的后继者)中完成。

Logback旨在作为流行的log4j项目的后继者,从log4j离开的地方接手。

请参阅文档筛选器

SiftingAppender在引用和配置嵌套追加程序方面具有独特的功能。在上面的示例中,在SiftingAppender中将存在嵌套的FileAppender实例,每个实例均由与“
userid” MDC密钥关联的值标识。只要为“ userid”
MDC密钥分配了新值,就会从头开始构建新的FileAppender实例。SiftingAppender跟踪其创建的附加程序。未使用30分钟的Appender将自动关闭并丢弃。

在该示例中,它们基于MDC值为每个用户生成一个单独的日志文件。根据您的需要,可以使用其他MDC值。



 类似资料:
  • 问题内容: 我们有几个同时运行的作业,它们必须为log4j使用相同的配置信息。他们都使用相同的附加程序将日志转储到一个文件中。有没有一种方法可以让每个作业动态命名其日志文件,以使它们保持独立? 谢谢 汤姆 问题答案: 您可以为每个作业传递Java系统属性吗?如果是这样,您可以像这样进行参数化: 然后在您的log4j.properties中: 您可以使用主机环境(例如)中的值填充Java系统属性,该

  • 问题内容: 我想要一个log4j配置,这样日志文件名应该像$ {System-name} log.log。也就是说,如果该应用程序在任何系统上启动,则无需更改配置文件或代码。它应该生成提到的日志文件名。谢谢。 问题答案: 我这样做: 1)通过以下方式初始化记录器: 2)在log4j.xml中我使用变量:

  • 我使用logback MDC来记录我的应用程序不同模块的日志,例如, logback.xml中的mdc配置 我想在不同的日志文件中记录贸易或货物sql日志,所以我想知道JOOQ是否支持这个?

  • 我希望在翻转后,旧日志文件的文件名中有创建日期。当前日志文件名中的日期不等于文件的创建日期。举个例子:如果一个日志文件是昨天创建的,更新到今天,现在已经翻转,那么昨天的日期应该在旧的日志文件名中可见。 启动后的日志切换在代码中如下所示 这类似于onStartupTriggeringPolicy 文件creationTime问题的以下bug(但未修复),适用于RollingFileAppender,

  • 问题内容: 这个问题的一个子集此。我希望每天使用以下日志文​​件名格式创建一个日志文件: 使用,但根本不创建日志文件。 我的lo4j.xml看起来像这样: 问题答案: 直到午夜后的某个时间记录了第一条消息后,使用log4j附带的发货才重命名日志文件。 您可以尝试使用,可以从此处下载。与相反,它将创建日志文件,其文件名始终包含今天的日期。

  • 我有一个java项目,它使用log4j作为记录器。要求在日志文件中打印测试用例名称。 一个类中有多个测试,该项目也支持并行执行。为每个测试创建一个记录器实例。 我使用system. Setproprty将我当前的记录器实例与测试用例名称相关联。以下是我的log4j.properties文件:- 并在创建logger文件的新实例时设置运行时变量${testCaseName},如下所示:- 上面的lo