Ведение журнала Commons для использования java.util.logging

Я пытаюсь использовать ведение журнала общего пользования и хочу использовать java.util.logging в качестве основного механизма.

LogTest.java

import org.apache.commons.logging.*;

public class LogTest { 

        public static void main(String args[]) {
            System.setProperty("java.util.logging.config.file","log.properties");
            Log logger = LogFactory.getLog(LogTest.class);
            logger.trace("trace msg");
        }
}

У меня есть src / main / resources / log.properties (я использую проект maven)

handlers=java.util.logging.ConsoleHandler

# Default global logging level.
# Loggers and Handlers may override this level
.level=ALL

Я не вижу никаких результатов. Скажите, пожалуйста, как программно настроить log.properties для использования ведения журнала Java.


person Arun Kandregula    schedule 26.02.2011    source источник


Ответы (4)


Вам необходимо указать регистратор, реализующий интерфейс журнала. В этом случае Jdk14Logger.

Ознакомьтесь с Как использовать 'Apache Commons Logging 'с' Java SE Logging '? для получения дополнительных сведений.

Кроме ссылки:

Поместите файл «commons-logging.properties» в путь к классам вашего приложения. Содержимое этого файла должно выглядеть так: org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger Установка этого свойства указывает Commons-Logging использовать JDK Logger (т.е. Java SE Logger) в качестве реализации журнала.

Затем введите log-config.properties в свой путь к классам и настройте соответствующим образом.

Если вы решите изменить имплименты в будущем, Дополнительные регистраторы доступны по умолчанию.

person Snekse    schedule 24.01.2013
comment
Спасибо, что поделились ссылкой на мой блог! - person Rushikesh Thakkar; 25.08.2014
comment
Это работает (простой проект Java). Но попытки сделать то же самое с проектом Maven в Eclipse / STS - нет. Пытался поместить файл конфигурации журнала (я поместил всю конфигурацию внутри самого commons-logging.properties) в src / main / resources и src / main / java и корень проекта, он не подбирается. Каков путь к классам в этом случае при использовании maven? - person user104309; 18.09.2016
comment
src/main/resources должно быть правильно. Если это не работает, вам нужно проверить свои предположения о том, что включено в ваш путь к классам. Вы также можете убедиться, что все упаковано правильно, взломав файл jar / war, чтобы убедиться, что файл находится там, где вы его ожидаете. - person Snekse; 19.09.2016

# Loggers and Handlers may override this level

Попробуйте добавить java.util.logging.ConsoleHandler.level=ALL в свой log.properties.

person Leif Carlsen    schedule 26.02.2011
comment
Прости. Это не сработало. И мое содержимое src / main / resources / commons-logging.properties: org.apache.commons.logging.Log = org.apache.commons.logging.impl.Jdk14Logger - person Arun Kandregula; 27.02.2011

создайте commons-logging.properties в пути к классам:

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger

установите java.util.logging.config.file перед экземпляром Logger:

System.setProperty("java.util.logging.config.file","log.properties");

тогда журнал JDK будет appender всеми журналами, которые используются org.apache.commons.logging. *;

пример: весна, спящий режим, стойки и т. д.

person zg_spring    schedule 31.07.2014

Хотя ответ Снексе в основном правильный, есть один момент, который следует исправить / уточнить:

  1. Правильно: журнал commons-logging ищет свой файл свойств из пути к классам. Таким образом, commons-logging.properties должен быть найден в пути к классам.
  2. Неправильно: регистратор JDK (JUL-logger) загружает свою конфигурацию через FileInputStream (который работает с объектами файловой системы, а не с путем к классам). См. Java.util.logging.LogManager.readConfiguration (). Таким образом, значение системного свойства «java.util.logging.config.file» должно быть либо абсолютным путем, либо относительно фактического каталога выполнения.
person Heri    schedule 17.12.2019