Как включить метку времени UNIX в свернутое имя файла журнала с log4j2?
Что у меня сейчас в моем конфигурационном файле
{
"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
это будет работать.
В результате он создает развернутый файл machine.json, но, похоже, не может его добавить. Он остается равным нулю байтов, даже когда я заполняю систему вещами, которые обычно генерируют тонну журналов с исходной конфигурацией.
Что тут происходит? Как мне достичь желаемого эффекта?
1 ответ
Я не уверен, что вы можете использовать все параметры преобразователя даты PatternLayout %d в RollingFile filePattern.
Однако если ${sys:someKey...
работает поиск системных свойств, тогда также будет работать пользовательский поиск. Поэтому одной из идей является написание пользовательского поискового плагина, который генерирует метку времени Unix, и настройте RollingFile filePattern следующим образом:"filePattern":"${sys:my.logging.directory}/RolledLogs/$${date:yyyy}/$${date:MM}/$${mylookup:UNIX}-machine.json.gz"
Вот пример того, как написать собственный плагин поиска Log4j 2: /questions/7819865/kak-nastroit-log4j2-rollingfileappender/7819867#7819867