我正在处理一个项目,将日志记录从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文档,为了实现同样的目标,我应该编写一个文件转换器文档类型的转换器插件。但是,我无法找到任何细节,如哪个类需要扩展,以及任何与文件转换器相关的示例代码。请帮助实现这个目标。提前感谢...!!!
谢谢你,
1条答案
按热度按时间o3imoua41#
有两种占位符可用于在翻转后生成旧日志文件的名称:
%key{...}
。Log4j2将旧日志文件的创建日期和索引号传递给这些转换器。只有两个转换器:日期模式%d{...}
(参见source code)和索引模式%i
(参见source code),并且它们必须实现ArrayPatternConverter
。${key:value}
,它不能访问上面提到的两个值。由于JVM的进程ID不会及时更改,因此不需要模式转换器和:
app.base
和pid
,则可以使用系统属性查找:JavaLookup
(您可以利用ProcessIdUtil
执行此操作),并将修改后的版本PR到Log4j2项目。