Как я могу определить, какой источник конфигурации журнала используется на самом деле?
log4j имеет свойство log4j.debug
, которое поможет пользователю указать, какой файл конфигурации был фактически использован для настройки системы ведения журнала.
Я не смог найти что-либо, эквивалентное (в противном случае превосходящему) структуре ведения журнала регистрации. Есть ли способ печати (для целей диагностики) во время выполнения, какой файл конфигурации Logback используется для начальной загрузки?
[править]
Чтобы уточнить, мне идеально понравилось решение, которое не требует, чтобы я сам изменил сам файл конфигурации (поскольку, например, плохо собранный сторонний JAR может быть неправильно подобран, а перед моей конфигурацией logback XML).
Ответы
Ответ 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
Не очень научный, но он работает, если вам просто нужно быстрое подтверждение.
Я просто изменил шаблон записи журнала и наблюдал, изменился ли он в моем файле консоли/журнала.