В моей команде у нас есть стандарт протоколирования, и по большей части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, которого я пропускаю?
Мы закончили тем, что идем по другому маршруту. в проекте все наши исключения простираются от конкретного класса, у которого есть информация, которая нам нужна. поскольку это в основном для регистрации исключений, у нас есть собственный форматировщик, который проверяет тип исключения и извлекает информацию, если она есть. – jpcamara