java logger динамически меняет поле - PullRequest
0 голосов
/ 23 августа 2011

Мне нужно изменить наш формат журнала.

Теперь журнал выглядит так:

[Thread ID] TIME ClassName
Content

Мне нужно добавить поле в заголовок, и это поле можно определить только ввремя регистрации:

[Thread ID] TIME ClassName NewField
Content

Здесь, когда нам нужно что-то зарегистрировать, мы хотим добавить динамически изменяемое поле, которое является системной информацией.

Я не могу легко переместить это в началоКонтента, потому что таким образом мне нужно изменить все места, где вызывается logger.warning или logger.info и т. д.

Существует общее место (точка входа) для последующего кода, яможете установить значение этого нового поля здесь.Позже, когда вызывается logger.warning ("XXX"), он может распознать значение.

Можно ли этого добиться?

1 Ответ

1 голос
/ 23 августа 2011

Может быть, вы можете сделать это, создав подклассы / создав собственную реализацию Logger , LogRecord и Formatter . Регистратор получит дополнительное поле, которое вы зададите, и также будет добавлено в LogRecord в момент регистрации. Форматер должен позаботиться о включении этого значения в заголовок.

Если NewField является чем-то выходящим из среды, вы можете увидеть, есть ли способ сделать это с помощью log4j .

В любом случае вы будете проводить рефакторинг. Вполне может быть, что проще найти все методы info(), warn() и т. Д. И добавить информацию здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...