ведение журнала slf4j / log4j с использованием маркеров - PullRequest
1 голос
/ 07 мая 2019

Во-первых, я нашел такой вопрос, который кажется очень актуальным:

Как настроить отдельные потоки ведения журнала для log4j?

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

Я написал очень простую программу, пытаясь проверить это.

package my.package;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;

public class LoggingTest {

  private static final Logger logger = LoggerFactory.getLogger(LoggingTest.class);

  public static void main(String[] args) {
    Marker marker = MarkerFactory.getMarker("MARKER");
    logger.info(marker, "log info to marker log");
    logger.info("log info to regular log");
  }

}

log4j.xml:

<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>
  <!-- APPENDERS -->
  <appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern"
        value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5p: %c{2}:%L - %m%n" />
    </layout>
  </appender>

  <appender name="file" class="org.apache.log4j.FileAppender">
    <param name="file" value="session.log" />
    <param name="append" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern"
        value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5p: %c{2}:%L - %m%n" />
    </layout>
  </appender>

  <appender name="marker-file" class="org.apache.log4j.FileAppender">
    <param name="file" value="marker.log" />
    <param name="append" value="true" />
    <MarkerFilter marker="MARKER" onMatch="ACCEPT" onMismatch="DENY" />
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern"
        value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5p: %c{2}:%L - %m%n" />
    </layout>
  </appender>

  <!-- LOGGERS -->
  <root>
    <level value="INFO" />
    <appender-ref ref="marker-file" />
  </root>
</log4j:configuration>

Ведение журнала прямо сейчас настроено на вход в маркер-аппендер. Мне нужно выяснить, как настроить регистратор (ы) для отправки вывода «маркера» аппендирующему маркеру, а остальные - «обычному» аппендеру.

Я не знаю, правильный ли синтаксис использования элемента MarkerFilter или нет.

Когда я запускаю программу, я указываю аргумент VM -Dlog4j.configuration=file://<path to log4j.xml>.

Я запускаю это изнутри eclipse, и у меня возникла отдельная проблема, когда кажется, что он не распознает файл log4j.xml, который я ему предоставляю. Я предполагаю, что это что-то, что я делаю неправильно (и, вероятно, причина, по которой то, что я пытаюсь сделать, кажется, не работает).

Любые идеи относительно того, что я мог бы делать неправильно, чтобы получить файл log4j.xml, который будет распознан, и затем, если все это проверит, правильно ли я использую механизм фильтра / маркера, будет очень оценили.

UPDATE

Я делаю это на компьютере с Windows, поэтому я подозреваю, что что-то не так с тем, как я указываю URI файла для файла log4j.xml.

...