Log4j, уведомляющий об изменениях уровня ведения журнала - PullRequest
2 голосов
/ 01 декабря 2010

Есть ли в любом случае или какая-либо конфигурация в log4j, которая говорит ему регистрировать строку всякий раз, когда происходят какие-либо конфигурации "уровня регистрации"?

Я имею в виду, что кто-то изменил в каком-то пакете уровень отладки с INFO на DEBUG, яхочу, чтобы это событие было зарегистрировано log4j.

Спасибо

Ответы [ 4 ]

1 голос
/ 10 декабря 2010

Я не уверен, что это ваш случай, но если вы перезагружаете файл конфигурации, используя configureAndWatch, вы сможете увидеть информацию, которая вам нужна, для установки системного свойства -Dlog4j.debug=true.

См.http://logging.apache.org/log4j/1.2/apidocs/index.html?org/apache/log4j/xml/DOMConfigurator.html

0 голосов
/ 01 декабря 2010

Во время выполнения, если у вас есть сервлет, jsp или экран в вашем приложении, где вы можете изменять уровни журнала, вы, скорее всего, будете делать что-то подобное

public void changeLogLevel(String className, String logLevel){
    Logger logger = Logger.getLogger(className);
    Level level = Level.toLevel(logLevel);
    logger.setLevel(level);
}

для входаВ этом событии все, что вам нужно сделать, это добавить дополнительный оператор логгера для этого события

private static Logger classLogger = Logger.getLogger(ThisClass.class);
public void changeLogLevel(String className, String logLevel){
    Logger logger = Logger.getLogger(className);
    Level level = Level.toLevel(logLevel);
    logger.setLevel(level);
    classLogger.debug("The Level of " + className + " has changed to " + logLevel);
}

Затем каждый раз, когда происходит уровень журнала, вы можете регистрировать его здесь.Если вы хотите стать модным, просто отправьте этот журнал в свой собственный файл.Возможно, вы захотите продвинуть метод еще дальше, включив IP / имя пользователя, который изменил уровень журнала.

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

0 голосов
/ 02 декабря 2010

Это не отвечает на ваш вопрос, но встроенная реализация java.util.logging.LogManager имеет метод addPropertyChangeListener (), который делает именно то, что вы хотите.

Я не смог найти ничего похожегов Log4J, но я не выглядел так усердно ...

0 голосов
/ 01 декабря 2010

Есть LogLog, самостоятельная регистрация Log4J.Я никогда не использовал его, но если решение существует, оно есть.Я бы предложил вам скачать исходный код log4j и попытаться исследовать его там, где он «знает», что уровень журнала изменяется.Как только вы нашли код, посмотрите, печатает ли он что-то для самостоятельной регистрации и сконфигурируйте его, как вам нужно.

Буду признателен, если вы найдете здесь более конкретный ответ, если найдете его.Удачи.

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