Итак, я снова бьюсь головой о стену и снова захожу. Я знаю, насколько это может быть сложно? Ну что ж, посмотрим ...
Я начинаю новый проект для запуска на 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?
Спасибо!