Как изменить имя файла журнала регистратора slf4j - PullRequest
0 голосов
/ 26 февраля 2020

У меня вопрос по поводу изменения имени файла журнала регистратора slf4j. В файле logback. xml это установлено в myApp.log. Я хотел бы иметь возможность изменять это имя файла каждый раз, когда я запускаю свой код в Java, где имя файла представляет собой комбинацию настроек, для которых я запускаю проблему. Как вы можете себе представить, у меня есть некоторый код для этого в Java, вместо того, чтобы каждый раз изменять его вручную в файле logback. xml.

Изменить имя выходного файла журнала с Java в SLF4j

Я видел нить в ссылке выше, однако, кажется, это работает для меня. В настоящее время я реализовал это следующим образом

    /* Configure parameters */
    Properties properties = new Properties();
    Configuration.readFromFile(properties);
    properties.setProperty("MAXTHREADS", "1");
    properties.setProperty("EXPORT_MODEL", "false");
    properties.setProperty("log4j.appender.debugFile.File", "test.log");
    properties.setProperty("log4j.appender.infoFile.File", "test2.log");
    properties.setProperty("log4j.appender.warnFile.File", "test3.log");
    properties.setProperty("log4j.appender.errorFile.File", "test4.log");

Если я запустил его с этими настройками, выходные данные все еще сохраняются в myApp.log.

Любые предложения приветствуются!

1 Ответ

0 голосов
/ 26 февраля 2020

Вы можете использовать просеивающий аппендир и просто

MDC.put("myRun", "runXXXX");

перед запуском вашего кода.

Примерно так же в вашем логбэке. xml:

  <appender name="MapiContextSplit" class="ch.qos.logback.classic.sift.SiftingAppender">
    <discriminator>
      <key>myRun</key>
      <defaultValue>default</defaultValue>
    </discriminator>
    <sift>
      <appender name="FILE-${myRun}" class="ch.qos.logback.core.rolling.RollingFileAppender">
                 <file>/var/log/test-${myRun}.log</file>
      </appender>
    </sift>
  </appender>
...