Как я могу программно проверить, запущен ли appender в log4j2, и запустить его, если он не запущен? - PullRequest
0 голосов
/ 18 февраля 2019

Я периодически получаю сообщение об ошибке ниже,

Попытка добавления к незапущенному приложению "XYZ" в отдельной программе, в которой я создаю объект регистратора программным путем.

Я использую

org.apache.logging.log4j.Logger и явный запуск приложения перед его использованием через appender.start ();

Любая справка приветствуется.

Пример кода:

// Класс Logger

открытый класс LoggerDemo {

private Logger myLogger;  

public LoggerDemo(String fileName){
    LoggerContext context= (LoggerContext) LogManager.getContext(false);
    if (!context.hasLogger(fileName)) {
        Configuration config= context.getConfiguration();
        Layout layout = PatternLayout.createLayout(PatternLayout.SIMPLE_CONVERSION_PATTERN, null, config, 
                null, null, false, false, null, null); 
        Appender appender = FileAppender.createAppender(fileName, "false", "false", "myLoggerFile", "true", 
                "false", "false", "40000", layout, null, "false", null, config);
        appender.start();
        config.addAppender(appender);
        AppenderRef ref = AppenderRef.createAppenderRef("File", null, null);
        AppenderRef[] refs = new AppenderRef[] {ref};
        LoggerConfig loggerConfig = LoggerConfig.createLogger("false", Level.ALL, fileName, "true", refs, null, config, null);
        loggerConfig.addAppender(appender, null, null);
        config.addLogger(fileName, loggerConfig);        
        context.updateLoggers();
    }
    processLogger = context.getLogger(fileName);
}

}

Основной класс

public Class Test{
main(){
LoggerDemo logger = new LoggerDemo("abc.log");
//logger.info();
//and so on..
}
}

Спасибо

...