2016-02-07 2 views
1

Я запускаю Spring Boot и хочу добавить журнал в мое приложение. Все примеры следующих за основным EntryPoint Применение:Как сделать компоненты регистрации видимыми во всем приложении Spring Boot

private static final Logger log = LoggerFactory.getLogger(Application.class); 

Однако, я хочу того же журнала переменная видна (как Singleton) во всех моих компонентов приложения (услуги, контроллеры и т.д.). Как мне это сделать? Благодаря!

ответ

1

Вы можете использовать пружины IoC контейнер для достижения этой цели.

просто настроить компонент, как это в @Configuration Касс

@Bean 
public Logger log() { 
    return LoggerFactory.getLogger(AnyClassYouWant.class); 
} 

и ввести его с @Autowired в классе

class WhatEver { 
    @Autowired 
    Logger log; 

    //... 
} 
+0

Лично я считаю, что этот ответ более «чистый» весна способ сделать это, а затем принять его. Также стоит упомянуть, что когда '@ Bean' определен, его область действия по умолчанию равна Singleton. – patrykos91

+0

Но таким образом, вам все равно нужно определить и автоувеличивать переменную регистратора в каждом классе, который вы собираетесь использовать? Я бы предпочел решение, в котором все классы в проекте имеют видимость для него, без необходимости явно определять его в каждом классе. – user1340582

+0

Я добавил Bean для регистратора, установил AnyClassYouWant как имя класса класса Configuration («Конфигурация»), затем автоувеличил переменную регистратора в другом классе, но он дает ошибку, по крайней мере, одному компоненту должен быть кандидат на автозапуск? – user1340582

0

Вы можете создать статический класс .. Который содержит:

private static final Logger log = LoggerFactory.getLogger(StaticLog.class); 

И выставят методы, чтобы писать журналы ..

Надеется, что ответить на ваши потребности

Смежные вопросы