Log4j2 RollingFileManager OnStartupTriggeringPolicy никогда не запускает файл при запуске - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь заставить log4j2 (V2.11.1) свернуть существующий файл журнала при запуске, прежде чем он начнет входить в новый файл.Мой конфиг ниже.Я использую RollingFileManager с OnStartupTriggeringPolicy с minSize = 0, что, согласно документации, должно быть достаточным.

Однако я обнаружил, что при запуске метод OnStartupTriggeringPolicy class initializeсравнивает временную метку файла журнала с запуском JVM, и, если время файла журнала превышает время запуска, файл не будет свернут.Если я перешагиваю код, то вижу, что в момент выполнения проверки время файла всегда превышает время запуска JVM, поскольку log4j2, по-видимому, уже открыл файл для записи в этот момент.

public void initialize(RollingFileManager manager) {
    if (manager.getFileTime() < JVM_START_TIME && manager.getFileSize() >= this.minSize) {
        if (this.minSize == 0L) {
            manager.setRenameEmptyFiles(true);
        }

        manager.skipFooter(true);
        manager.rollover();
        manager.skipFooter(false);
    }
}

Это ошибка или я просто что-то не так делаю?

РЕДАКТИРОВАТЬ: Выдал отчет об ошибке с командой Log4j2 ( LOG4J2-2517 ).Первоначальные обсуждения в значительной степени подтверждают, что это действительно ошибка.

log4j2.json:

{
    "configuration": {
        "appenders": {
            "Console": {
                "name": "Console",
                "PatternLayout": {
                    "pattern": "%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%c{2}] [%t]%n[%p] : %m%n"
                }
            },
            "RollingFile": {
                "name": "RollingFile",
                "fileName": "logs/orchestrator.log",
                "filePattern": "logs/orchestrator-%d{MM-dd-yy-HH-mm-ss}-%i.log.gz",
                "append": false,
                "PatternLayout": {
                    "pattern": "%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%c{2}] [%t]%n[%p] : %m%n"
                },
                "Policies": {
                    "OnStartupTriggeringPolicy": {
                        "minSize" : 0
                    },
                    "SizeBasedTriggeringPolicy": {
                        "size": "50 MB"
                    }
                },
                "DefaultRolloverStrategy": {
                    "max": "10"
                }
            }
        },
        "loggers": {
            "root": {
                "level": "info",
                "AppenderRef": [
                    {"ref": "RollingFile", "level": "INFO"},
                    {"ref": "Console", "level": "ERROR"}
                ]
            }
        }
    }
}

1 Ответ

0 голосов
/ 03 января 2019

Подтверждено как ошибка , исправленная в пока не выпущенном V2.11.2 из Log4j2.

...