Формат сообщения SLF4J в сервере приложений WebSphere - PullRequest
2 голосов
/ 16 декабря 2009

Итак, я снова бьюсь головой о стену и снова захожу. Я знаю, насколько это может быть сложно? Ну что ж, посмотрим ...

Я начинаю новый проект для запуска на WebSphere Application Server 6.1 (на самом деле это Portal Server 6.1, но это WAS 6.1 под капотом - что угодно). Я обычно использую java.util.logging для своих проектов WAS, и все в порядке. Этот клиент фанат SLF4J и хочет этим воспользоваться. Справедливо, звучит просто.

Итак, я развернул slf4j-api-1.5.8.jar и slf4j-jdk14-1.5.8.jar в моем каталоге WEB-INF / lib. В моем коде я делаю -

// These classes are coming from org.slf4j.*
private static Logger log = LoggerFactory.getLogger(MyClass.class);
...
log.debug("This is a log message");

Как и ожидалось, я получаю запись в SystemOut.log. Тем не менее, это формат этого сообщения, который я не могу понять. Образец будет -

[12/15/09 15:43:15:071 EST] 00000042 MyClass D com.example.MyClass This is a log message

Позвольте мне объяснить, что находится в этой записи журнала. Я предполагаю, что все слева от com.example.MyClass исходит от форматера j.u.l. Все, что справа от этого, - то, что я включил в свой log.debug (). Итак, кто добавляет com.example.MyClass ? Единственное, о чем я могу думать, это то, что SLF4J добавляет его до того, как передает сообщение в базовый файл j.u.l.

Меня раздражает com.example.MyClass . Я не хочу, чтобы это было включено в генерируемое SLF4J сообщение. Имя класса уже включено, так что это лишний пух, который не нужен. Кроме того, настоящие имена пакетов довольно длинные, и их включение просто толкает реальное содержание записи журнала слишком далеко вправо.

Когда я использую просто обычный java.util.loggging, запись в журнале точно такая же , за исключением , что кусок "com.example.MyClass" не включен. Точно так, как я хочу!

Итак, вопрос - как я могу избавиться от этой дополнительной записи имени класса в сообщениях журнала, генерируемых через SLF4J под WAS?

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 декабря 2009

Вы связываете slf4j с java.util.logging, который, скорее всего, настроен внутри WebSphere, поскольку он не похож на стандартный формат сообщений.

Я не знаю WebSphere, но вы можете получить лучший результат, сказав slf4j связываться с чем-то другим. Подойдет ли простой бэкэнд slf4j? Он просто печатает сообщения с информацией выше или выше, а не вызывает java.util.logging.

0 голосов
/ 16 декабря 2009

В основном вы хотите настроить макет сообщений регистрации, создаваемых базовым механизмом регистрации.

SLF4J фактически не выполняет ведение журнала, но делегирует другим системам ведения журнала (log4j, JUL и т. Д.) В зависимости от того, как вы его настроили.

Так что, если вы связываете SLF4J с JUL, то я думаю, что реальный вопрос, который вы задаете, это один из

...