Как получить Google Guice, чтобы ввести пользовательский регистратор, скажем, Commons-Logging или Log4j Logger - PullRequest
7 голосов
/ 09 апреля 2010

Google Guice имеет привязку встроенного регистратора . Но что, если я захочу использовать систему регистрации общего пользования или log4j?

Могу ли я получить подсказку, чтобы добавить журнал, созданный

LogFactory.getLog(CLASS.class)

Но имеет то же поведение, что и во встроенной привязке:

Привязка автоматически устанавливает имя регистратора на имя класса, в который вводится регистратор.


Имеет ли это смысл? Или кричите, я просто использую встроенный java Logger? Или просто использовать общинную регистрацию без инъекций?

Ответы [ 4 ]

11 голосов
/ 09 апреля 2010

Страница CustomInjection в вики Guice описывает, как именно внедрить регистратор, названный классом, в который он вводится.

1 голос
/ 09 апреля 2010

Это ваш выбор. Я успешно использовал logback с Guice, используя метод, подробно описанный в вики.

Взгляните на проект sli4j . Это может быть полезно.

0 голосов
/ 09 апреля 2010

Хотя вы не можете переопределить предоставленный регистратор java.util.logging.Logger, вы привязываете новый регистратор так же, как и любой другой класс:

bind(Log.class).to(LogFactory.getLog(YourClass)); // or toInstance(...);

Но создать именованный регистратор будет немного сложнее.

Если вы покопаетесь в коде Google Guice (u til.BinderImpl.java: 87 ), вы сможете увидеть, как они назначают отдельное имя класса для каждого введенного экземпляра регистратора. Однако я не проверил его достаточно тщательно, чтобы понять, легко ли его воспроизвести.

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

0 голосов
/ 09 апреля 2010

Guice очень полезен для внедрения различных реализаций интерфейса. Это не тот случай, когда разные реализации логирования имеют разные API.

Если вы хотите иметь возможность обмениваться фактической реализацией ведения журнала позже при разработке с использованием интерфейса, используйте commons logging или slf4j .

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