У меня есть два класса в моем проекте, которые я хотел бы передать логгерам из основного класса в подкласс и иметь подкласс для использования параметров родительского регистратора.Передача регистратора между классами
Подкласс - это отдельный общий класс (т. Е. Не привязанный к основному классу) и должен иметь возможность создавать собственный журнал, если его нет.
Главный класс создает регистратор, добавляет обработчик консоли, обработчик файлов и формат журнала, и я хотел бы, чтобы подкласс мог временно переопределить формат журнала для его сообщений журнала, а затем, когда основной класс возобновляется , вернитесь к его формату журнала.
Я попытался подвести логгера к подклассу или создать новый, если потребуется, но я получаю несколько сообщений на экране и в файле журнала (похоже, это добавление обработчиков в основной класс а не превышать его).
Как бы я это сделал?
Так что не нужно проходить регистратор и установить экземпляр регистратора? , например. private void setLogger (Logger logger) { this.logger = logger; } – Omertron
Итак, я сделал это, изменил метод, чтобы принять имя строки регистратора. Теперь мне нужно перенаправить logFormatter основного класса на форматтер моего локального класса, но теперь он «перезаписывает» форматировщик основного класса. – Omertron
. Ну, вы можете «сохранить» исходный (основной) форматщик логов, например, как поле подкласса, и установите его, когда вы закончите использовать его в подклассе. Я бы сказал, что он достаточно безопасен, если нет параллелизма. Однако рекомендуемая практика заключается в том, что все классы должны использовать собственный журнал и получать свои собственные экземпляры с помощью Logger.getLogger (LocalClass.class.getName()). – cbaby