Я использую log4j2 (версия - 2.5), и я пытаюсь написать плагин конвертера сообщений, который замаскирует некоторые из известных шаблонов сообщения журнала.Как скрыть сообщения журнала log4j2
@Plugin(name = "CustomeMasking",
category = "Converter")
@ConverterKeys({"m"})
public class MyCustomFilteringLayout extends LogEventPatternConverter {
}
Когда я бегу мое веб-приложение, с помощью этого плагина, то я вижу в этом предупредит сообщение
WARN конвертер ключ «м» уже отображен «класса org.apache.logging.log4j.core .pattern.MessagePatternConverter. Извините, Дэйв, я не могу этого сделать! Игнорирование плагина [класс MyCustomFilteringLayout].
После изучения сайта log4j2 я нашел эти ссылки.
Если несколько конвертеров указать тот же ConverterKeys, то нагрузка порядок выше, определяет, какая из них будут использоваться. Например, до переопределить конвертер даты%, который предоставляется встроенным классом DatePatternConverter, вам необходимо разместить свой плагин в файле JAR в CLASSPATH перед log4j-core.jar. Это не рекомендуется; pattern ConverterKeys вызовет предупреждение об ошибке . Попытайтесь использовать уникальные ConverterKeys для своего настраиваемого шаблона конвертеров .
Мне нужна помощь, чтобы понять, как я могу написать свои пользовательские преобразователи для m/msg. Есть ли лучший способ сделать это?
Дополнительная информация: Я создал затененную банку для MyCustomFilteringLayout. Причина, по которой я делаю это, заключается в том, что я хочу, чтобы логика маскировки была отделена от приложения.
Обновлен
Я создал конвертер для собственного ключа, который выглядит так,
@Plugin(name = "CustomeMasking",
category = "Converter")
@ConverterKeys({"cm"})
public class MyCustomFilteringLayout extends LogEventPatternConverter {
}
Здесь я не могу написать еще один конвертер для того же ConverterKeys - см? Теперь мой log4j2.xml имеет этот макет шаблона,
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %cm %ex%n</Pattern>
</PatternLayout>
Просто удивляйтесь, можете ли вы просто использовать другой ключ, который не используется существующим конвертером, и соответственно изменить шаблон журнала? –
Если я это сделаю, то я не смогу написать несколько конвертеров для моего ключа, который, я думаю, не решит мой вариант использования. Мой вариант использования: я хочу скрыть определенные шаблоны из сообщений журнала, и я думаю, это создать много конвертеров для разных сценариев. Я делаю это неправильно? Есть ли лучший способ сделать это? – Shishir
Я предполагаю, что вы хотите маскировать данные в журнале событий, а не предотвращать использование определенных ключей конвертера? Почему бы просто не написать собственный конвертер с помощью другого ключа конвертера? Я не совсем понимаю ваше утверждение о том, что вы не сможете писать несколько конвертеров. Возможно, вам нужно объяснить немного лучше, чего вы хотите достичь. – rgoers