用于Log4J2的文件转换器

2hh7jdfx  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(148)

我正在处理一个项目,将日志记录从log4j 1.x转换为log4j 2.x。对于滚动文件追加器,我需要创建一个文件名,该文件名中应追加服务的pid。对于**示例:**在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文档,为了实现同样的目标,我应该编写一个文件转换器文档类型的转换器插件。但是,我无法找到任何细节,如哪个类需要扩展,以及任何与文件转换器相关的示例代码。请帮助实现这个目标。提前感谢...!!!
谢谢你,

o3imoua4

o3imoua41#

有两种占位符可用于在翻转后生成旧日志文件的名称:

  • 模式转换器%key{...}。Log4j2将旧日志文件的创建日期和索引号传递给这些转换器。只有两个转换器:日期模式%d{...}(参见source code)和索引模式%i(参见source code),并且它们必须实现ArrayPatternConverter
  • 查找${key:value},它不能访问上面提到的两个值。

由于JVM的进程ID不会及时更改,因此不需要模式转换器和:

  • 如果设置了Java系统属性app.basepid,则可以使用系统属性查找:
<RollingFile name="RollingFile"
             fileName="${sys:app.base}/logs/${pid}-app.log"
             filePattern="${sys:app.base}/logs/${sys:pid}-app.log.%i">
    ...
</RollingFile>
  • 否则,您可以使用“pid”属性扩展JavaLookup(您可以利用ProcessIdUtil执行此操作),并将修改后的版本PR到Log4j2项目。

相关问题