Облик Google имеет встроенную привязку регистратора. Но что, если я хочу использовать вход свободного городского населения или log4j регистратор?
Я могу заставить облик вводить Журнал, созданный
LogFactory.getLog(CLASS.class)
Но имея то же поведение как во встроенной привязке:
Привязка автоматически определяет имя регистратора к названию класса, в который вводится Регистратор..
Это даже имеет смысл? Или крик я просто использую встроенный Регистратор Java? Или просто используйте вход свободного городского населения без инжекций?
На странице CustomInjections в Guice wiki описано, как именно инжектировать логгер, названный по классу, в который он инжектируется.
Хотя вы не можете переопределить предоставленный регистратор java.util.logging.Logger
, вы привязываете новый регистратор так же, как и любой другой класс:
bind(Log.class).to(LogFactory.getLog(YourClass)); // or toInstance(...);
Но создать именованный регистратор будет немного сложнее.
Если вы покопаетесь в коде Google Guice (u til.BinderImpl.java:87 ), вы увидите, как они назначают отдельное имя класса для каждого экземпляра введенного регистратора. Однако я не изучил его достаточно внимательно, чтобы понять, легко ли его воспроизвести.
Возможно, можно создать поставщика или внедрить фабрику, которая каким-то образом имеет доступ к контексту, чтобы вы могли предоставить именованный регистратор.
Guice очень полезен для внедрения различных реализаций интерфейса. Здесь дело обстоит не так, поскольку разные реализации ведения журнала имеют разные API.
Если вы хотите иметь возможность обмениваться фактической реализацией журналирования позже при разработке с использованием интерфейса, используйте commons logging или slf4j .
Это ваш выбор. Я успешно использовал logback
с Guice, используя метод, описанный в вики.
Посмотрите на проект sli4j. Он может быть полезен.