Веб-приложение, в котором я работаю, иногда создает проблемы с целостностью данных для некоторых пользователей. Я хотел бы включить ведение журнала трассировки, но поскольку мы имеем дело с 100-секундным протоколом отслеживания запросов в секунду, каждый отдельный запрос не может быть и речи.
Есть ли способ, с помощью которого log4j можно записывать условно? Другими словами, я хотел бы иметь возможность получать журналы трассировки только тогда, когда конкретные пользователи делают запрос. Поскольку я не знаю заранее, какие пользователи будут затронуты, я не могу просто временно жестко записать имена пользователей.
Edit:
Думаю, мне нужно быть немного яснее. Я могу легко добавить условия к своим операторам журнала. Например
Logger logger = Logger.getLogger("foo");
String usernameFilter = "piglet";
String username = request.getParameter("username");
logger.setLevel(usernameFilter.equals(username) ? Level.TRACE : Level.INFO);
if (logger.isTraceEnabled()) {
logger.trace("blah blah blah");
}
Трудность динамически изменяет условие, устанавливающее уровень журнала. Другими словами, в приведенном выше примере, как я могу установить значение usernameFilter, кроме жесткого кодирования.