log4j Запись логов в файл - PullRequest
       8

log4j Запись логов в файл

0 голосов
/ 07 ноября 2019

Я использую log4j для записи логов в файл, и он работает отлично. Однако у меня есть несколько проблем здесь.

Приложение принимает несколько аргументов, и я проверяю аргументы на его корректность. Основываясь на аргументах, я создаю имя файла журнала, и только если все аргументы верны, начинается регистрация. Но если аргументы неверны, регистрация никогда не происходит, поскольку файл журнала не создается. Итак, как я могу решить эту проблему и начать ведение журнала прямо с первой строки после main ().

class Test{
private static final Logger logger = LogManager.getLogger(Test.class);
    public static void main(String[] args){
    if (args.length < 5) {
                logger.error("Invalid arguments passed to program...."); //Not written to log file
                System.exit(1);
            }

    String id = args[0];
    String name = args[1].toLowerCase();
    String date = args[2];
    String batch = args[3];
    String file = args[4];

    String logfile = id + "_" + name + "_" + date + "_" + batch;
    System.setProperty("logfile", logfile);
    ConfigParser conf = new ConfigParser(propFile);
    String log = conf.getSetting("log4jConfPath");
    PropertyConfigurator.configure(log);

    //logs written to file from this point

Я хочу, чтобы ведение журнала начиналось с 1-й строки в main ()

#log file

log4j.rootLogger=INFO , file
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %-4r [%t] %-5p %c %x #%L - %m%n
log4j.appender.file.File=${logfile}.log

1 Ответ

1 голос
/ 07 ноября 2019

Я согласен с комментариями Йенса. Но если вы действительно хотите использовать пользовательский ввод для имени файла журнала и также записать первую строку, то вы можете вместо передачи его в качестве аргумента программы передать его в качестве аргумента JVM при выполнении программы.

-Dlogfile = my-log-file.log

Если вы не хотите использовать аргумент JVM, то вам не повезло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...