2010-10-06 2 views
0

В моей команде у нас есть стандарт протоколирования, и по большей частиLogging дополнительной информации с java.util.logging.Logger

Logger.log(Level, String, [Throwable]) 

Метода работает отлично (это дает нам автоматическую метку время, имя класса, метод имя, сообщение и метаданные в журнале). Однако у нас есть дополнительный идентификатор, который мы регистрируем, и это часть нашего стандарта (мы используем его для мониторинга журналов).

Моя проблема заключается в том, что я хочу быть в состоянии легко обеспечить соблюдение этого стандарта довольно безболезненным способом. Сначала мы создали класс обертки лесоруба, но проблема в том, вы теряете преимущество Logger зная, какой метод вы находитесь.

void myLoggerMethod(Level level, String msg, String identifier) { 
    logger.log(level, identifier + " " + msg); 
} 

будет регистрировать вещи в основном правильно, но тогда он регистрирует неверное имя методы. Вы можете использовать logp, чтобы обойти это, но тогда вам нужно отправить имя метода как String, и оно станет довольно грубым.

Есть ли хороший способ разрешить людям вводить дополнительную информацию для регистрации? Есть ли какой-либо механизм расширения, который позволяет это, или что-то в API, которого я пропускаю?

+0

Мы закончили тем, что идем по другому маршруту. в проекте все наши исключения простираются от конкретного класса, у которого есть информация, которая нам нужна. поскольку это в основном для регистрации исключений, у нас есть собственный форматировщик, который проверяет тип исключения и извлекает информацию, если она есть. – jpcamara

ответ

1

Я не полностью понимаю ваш USECASE, но вы можете попытаться реализовать пользовательские Formatter (или Handler) Или вы можете расширить существующий, как SimpleFormatter/FileHandler.

1

Вы можете посмотреть на него другим способом и настроить шаблоны кода в своей среде IDE.

Например, у меня установлена ​​IDE для изменения logdebug, logerror, loginfo для фрагментов кода для моего ведения журнала.

В моем IDE, я печатаю logdebug, нажать Ctrl + пробел и преобразует его в

if(logger.isDebugEnabled()){ 
logger.debug("xxx");} 

Затем я могу просто заполнить в сообщении я хочу.

Смежные вопросы