Передача логгера между классами - PullRequest
6 голосов
/ 12 октября 2010

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

Подкласс является отдельным общим классом (т. Е. Не привязанным к основному классу) и должен иметь возможность создавать собственный регистратор, если он не предоставлен.

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

Я пытался передать регистратор подклассу или создать новый, если это необходимо, но я получаю несколько сообщений на экране и в файле журнала (кажется, что я скорее добавляю обработчики в основной класс) чем перевернуть его).

Как бы я поступил так?

Ответы [ 2 ]

12 голосов
/ 12 октября 2010

Я предполагаю, что вы используете пакет java.util.logging.В этом случае, когда бы и где бы вы ни использовали Logger.getLogger (someString), вы получите один и тот же экземпляр Logger.

Например: если в основном классе вы используете Logger log = Logger.getLogger ("myLogger");Вы можете получить тот же логгер в любом другом классе, используя Logger.getLogger ("myLogger");

0 голосов
/ 13 октября 2010

Это то, что я имею до сих пор:

public void setLogger(String loggerName) {
    MySubClass.logger = Logger.getLogger(loggerName);

    for (Handler handler : logger.getHandlers()) {
        handler.setFormatter(tmdbFormatter);
    }
    logger.setUseParentHandlers(true);
    logger.setLevel(Level.ALL);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...