我现在在配置文件中有什么
{
"type":"RollingFile",
"name": "machineLog",
"ThresholdFilter": { "level": "debug" },
"JsonLayout":{"complete":"true"},
"Policies":
{
"SizeBasedTriggeringPolicy": {"size":"100M"}
},
"fileName": "${sys:my.logging.directory}/machine.json",
"filePattern":"${sys:my.logging.directory}/RolledLogs/$${date:yyyy}/$${date:MM}/%d{yyyy-MM-dd-HH}-machine.json.gz"
}
我希望滚动文件(filePattern
条目)包含UNIX时间戳。由于这是合法的,我尝试将该行更改为
"filePattern":"${sys:my.logging.directory}/RolledLogs/$${date:yyyy}/$${date:MM}/%d{UNIX}-machine.json.gz"
确定%d{UNIX}
文档页面中log4j2
提及了{{1}},因为它可行。
结果是它创建了展开的machine.json文件,但似乎无法附加到它。即使我使用原始配置生成大量日志的东西充斥系统,它仍保持零字节。
这里发生了什么?我怎样才能达到我想要的效果?
答案 0 :(得分:1)
我不确定您是否可以在RollingFile filePattern中使用PatternLayout%d日期转换器的所有选项。
但是,如果${sys:someKey...
系统属性查找有效,那么自定义查找也将起作用。因此,一个想法是编写一个生成unix时间戳的自定义查找插件,并像这样配置RollingFile filePattern:
"filePattern":"${sys:my.logging.directory}/RolledLogs/$${date:yyyy}/$${date:MM}/$${mylookup:UNIX}-machine.json.gz"
以下是如何编写自定义Log4j 2查找插件的示例:https://stackoverflow.com/a/27418802/1446916