Можно ли использовать несколько файлов log4j.properties в одном веб-приложении Tomcat? - PullRequest
5 голосов
/ 05 ноября 2010

Я пишу собственное расширение для готового веб-приложения Java. Приложение использует log4j для регистрации, и я хотел бы добавить новый регистратор и appender специально для моего расширения. Проблема заключается в том, что приложение управляет файлом log4j.properties, который генерируется динамически на основе выбора в пользовательском интерфейсе экрана администратора. Поскольку это стандартное приложение, я не могу изменить исходный код. Поэтому, если я добавлю в файл свой собственный логгер и приложение (я), он будет перезаписан всякий раз, когда администратор изменит настройки ведения журнала в пользовательском интерфейсе.

Возможно ли получить log4j, чтобы получить его конфигурацию из 2 файлов? Например, я бы хотел что-то вроде следующего:

applog.properties #(Dynamically generated from admin UI)
mylog.properties  #(My static properties)

В этом сценарии log4j каким-то образом объединит записи из обоих файлов для полной конфигурации.

Возможно ли это? или есть другие обходные пути?

1 Ответ

2 голосов
/ 09 ноября 2010

Я так и не нашел способ «объединить» несколько файлов log4j.properties, но я нашел работоспособное решение.Конфигурацией log4j можно манипулировать программно во время выполнения, подобно приведенному ниже фрагменту кода.Это фактически объединило мои пользовательские настройки log4j с конфигурацией, определенной файлом log4j.properties, который в моем случае я не мог редактировать.

// Init custom logging

// Define layout
PatternLayout layout = new PatternLayout();
layout.setConversionPattern("%d [%-5p] -- %m%n");

// Create appender
RollingFileAppender appender = new RollingFileAppender();
appender.setFile(LOG_PATH);
appender.setMaxFileSize("2MB");
appender.setMaxBackupIndex(0);
appender.setLayout(layout);
appender.activateOptions(); // It didn't work without this

// Get our logger and add appender.
log = Logger.getLogger("[MyCustomLogger]");
log.setLevel(YOUR_LOGGING_LEVEL_HERE);
log.addAppender(appender);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...