log4j2的fileconverter

发布于 2025-01-20 02:10:48 字数 604 浏览 0 评论 0 原文

我正在研究一个项目,将日志记录从log4j 1.x转换为log4j 2.x。 对于滚动文件appender,我需要创建应该具有PID的文件名 其中附加了服务。对于 ex: 在log4j 1.x中,它定义为以下:

<appender name="FILE" class="com.app.util.log4j.RollingFileAppender ">
        <param name="File" value="${app.home}/logs/@{pid}-app.log"/> 
<appender />

现在,根据log4j 2.x文档,要实现相同的内容,我应该编写一个转换器 类型文件转换器的插件 doc 。 但是,我找不到任何细节,例如需要扩展哪个课程和任何细节 示例代码与文件转换器有关。 请帮助实现这一目标。提前致谢...!!!

谢谢,

I am working on a project to convert logging from log4j 1.x to log4j 2.x.
For Rolling File Appender I need to create filename that should have the pid of the
service appended in it. For Ex:
In log4J 1.x it is defined as below:

<appender name="FILE" class="com.app.util.log4j.RollingFileAppender ">
        <param name="File" value="${app.home}/logs/@{pid}-app.log"/> 
<appender />

Now, as per the log4j 2.x documentation, to achieve the same, I should write a Converter
plugin of type File Converter doc.
But, I am not able to find any details like which class needs to be extended and any
sample code related to File Converter.
Please help to achieve this goal. Thanks in advance...!!!

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆梦 2025-01-27 02:10:48

您可以使用两种占位符来生成旧日志文件后生成旧日志文件的名称:

  • 模式转换器%键{...} 在“ FileConverter”类别中。 log4j2将旧的日志文件的创建日期和索引号传递给这些转换器。其中只有两个:日期模式%d {...} (cf. source code> source code ) >%i (参见源代码),他们必须实现 arraypatternconverter
  • Lookups $ {键:value} ,它无法访问上述两个值。

由于JVM的进程ID不会随时间变化,因此您不需要模式转换器,并且:

  • 设置Java System属性 app.base and pid 。可以使用系统属性查找:
     &lt; rollingfile name =“ rollingfile”
                 filename =“ $ {sys:app.base}/logs/$ {pid} -app.log”
                 filepattern =“ $ {sys:app.base}/logs/$ {sys:pid} -app.log。%i”&gt;
        ...
    &lt;/rollingfile&gt;
     
  • 否则,您可以扩展,例如 javalookup 带有“ pid”属性(您可以利用 processIdutil 进行此操作)并将修改后的版本pr到log4j2 project。

There are two kinds of placeholders you can use to generate the name of the old log file after a rollover:

  • pattern converters %key{...} in the "FileConverter" category. Log4j2 passes the old logfile's creation date and index number to these converters. There are only two of them: the date pattern %d{...} (cf. source code) and the index pattern %i (cf. source code) and they must implement ArrayPatternConverter.
  • lookups ${key:value}, which don't have access to the two values mentioned above.

Since the process id of the JVM does not change in time, you don't need pattern converters and:

  • if the Java system properties app.base and pid are set, you can use the system properties lookup:
    <RollingFile name="RollingFile"
                 fileName="${sys:app.base}/logs/${pid}-app.log"
                 filePattern="${sys:app.base}/logs/${sys:pid}-app.log.%i">
        ...
    </RollingFile>
    
  • otherwise you can extend, e.g. the JavaLookup with a "pid" property (you can exploit the ProcessIdUtil to do it) and PR the modified version to the Log4j2 project.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文