Интересуют границы использования и взаимосвязь java.util.logging, commons-loggins, log4j. Желательно в контексте работы в J2EE.
Нужен протокол работы, сохраняемый в БД, для последующего анализа. Соответственно не обойтись без доп.полей.
Куда бы подключиться, чтобы получить максимальную независимость от библиотек и настроек сервера приложений? Плюс обойти без лишнего гемороя проблему записи в лог во время записи в лог?
Здравствуйте, dimok@, Вы писали:
D>Интересуют границы использования и взаимосвязь java.util.logging, commons-loggins, log4j. Желательно в контексте работы в J2EE.
D>Нужен протокол работы, сохраняемый в БД, для последующего анализа. Соответственно не обойтись без доп.полей.
D>Куда бы подключиться, чтобы получить максимальную независимость от библиотек и настроек сервера приложений? Плюс обойти без лишнего гемороя проблему записи в лог во время записи в лог?
После вдумчивого анализа требований и изучения возможностей библиотек, выяснилось:
— желательно протоколировать как можно больше информации
— фильтры нужны только при представлении лога анализирующему
— почти все используемые либы (фреймворки) используют commons-logging
Сделал так написал проксю над commons-logging.Log, реализовал LogFactory, возвращающую Log, обернутый проксей. Все вроде отлично. НО! Сломалось определение класса/метода, вызвавшего протоколирование, это всегда моя прокся. Причем разработчики commons-logging, зашили в код уровень вложенности стека =2 для Jdk17Logger и FQCN=Log4JLogger.class.getName() для Log4JLogger. Я плакаль.
Придется хакать или копипастить оба.
Здравствуйте, dimok@, Вы писали:
D>Здравствуйте, dimok@, Вы писали:
D>Сделал так написал проксю над commons-logging.Log, реализовал LogFactory, возвращающую Log, обернутый проксей. Все вроде отлично. НО! Сломалось определение класса/метода, вызвавшего протоколирование, это всегда моя прокся. Причем разработчики commons-logging, зашили в код уровень вложенности стека =2 для Jdk17Logger и FQCN=Log4JLogger.class.getName() для Log4JLogger. Я плакаль. Придется хакать или копипастить оба.
А почему нельзя использовать Log LOGGER = LogFactory.getLog(this.getClass().getName())? Т.е. передавать имя класса явно?