Подтвердить что ты не робот

Как я могу определить, какой источник конфигурации журнала используется на самом деле?

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

Я не смог найти что-либо, эквивалентное (в противном случае превосходящему) структуре ведения журнала регистрации. Есть ли способ печати (для целей диагностики) во время выполнения, какой файл конфигурации Logback используется для начальной загрузки?

[править] Чтобы уточнить, мне идеально понравилось решение, которое не требует, чтобы я сам изменил сам файл конфигурации (поскольку, например, плохо собранный сторонний JAR может быть неправильно подобран, а перед моей конфигурацией logback XML).

4b9b3361

Ответ 1

Вы можете установить системное свойство Java для вывода информации об отладке журнала:

java -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener

Это дополнительно объясняется документацией по протоколу автоматической печати состояния (в нижней части указано, что вы выдает статус) и logback.statusListenerClass свойство:

При отсутствии сообщений о статусе отслеживание файла конфигурации rogue logback.xml может быть затруднено, особенно в производстве, где источник приложения не может быть легко изменен. Чтобы определить местоположение файла конфигурации изгоев, вы можете установить StatusListener через системное свойство "logback.statusListenerClass" (определенное ниже), чтобы принудительно выводить сообщения о статусе. Системное свойство "logback.statusListenerClass" также может использоваться для отключения вывода, автоматически генерируемого в случае ошибок.

Ответ 2

Если вы хотите перейти в глубину в Logback, вы можете сделать следующее

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil;

public class Main {

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

    public static void main(String[] args) throws Exception {
        LoggerContext loggerContext = ((ch.qos.logback.classic.Logger)logger).getLoggerContext();
        URL mainURL = ConfigurationWatchListUtil.getMainWatchURL(loggerContext);
        System.out.println(mainURL);
        // or even
        logger.info("Logback used '{}' as the configuration file.", mainURL);
    }
}

Он напечатает URL загруженного файла конфигурации.

Ответ 3

вы можете установить debug = "true" в файле loback.xml, который вы управляете следующим образом

<configuration debug="true">

(...)

</configuration

и убедитесь, что файл будет использоваться в logback, добавьте следующий аргумент VM при запуске вашей программы:

-Dlogback.configurationFile=/path/to/yourlogback.xml

Это не отвечает на ваш вопрос, но дает вам решение для работы.

Ответ 4

Не очень научный, но он работает, если вам просто нужно быстрое подтверждение.

Я просто изменил шаблон записи журнала и наблюдал, изменился ли он в моем файле консоли/журнала.