2016-11-21 7 views
0

Я создал сервер администрирования SpringBoot, где клиенты регистрируются на нем. Я хочу иметь возможность изменять уровни ведения журнала во время выполнения на вкладке «Ведение журнала» на сервере администрирования SpringBoot. У одного из клиентов моя проблема заключается в создании родительского регистратора для всех регистраторов в пакете «ke.co.betatech», где я бы изменил уровень ведения журнала для Logger.getLogger («ke.co.betatech») во время выполнения и Изменения уровня журналирования потомка. Я не хочу использовать корневой журнал для изменения уровня ведения журнала, так как он изменяет уровни ведения журнала для всех зарегистрированных регистраторов.SpringBoot Admin and logging

package ke.co.betatech.controllers; 

@RestController 
@RequestMapping("/api/v1") 
public class Controller2 implements IController { 

    Logger LOG; 

    public Controller2() { 
    LOG = Logger.getLogger(this.getClass()); 
    } 

    @GetMapping("/greeting") 
    public String hello() { 
    LOG.info("Hello"); 
    return "hello" 
    } 
} 

В главном классе это то, что я попытался

@SpringBootApplication 
public class LoggingLevelRuntimeApplication { 

    public static void main(String[] args) { 
     // I created the parent logger here 
     Logger log = Logger.getLogger("ke.co.betatech"); 
     SpringApplication.run(LoggingLevelRuntimeApplication.class, args); 
    } 
} 

Проблема заключается в том, регистратор Logger.getLogger("ke.co.betatech") не отображается в списке регистраторов в Spring загрузка администратора сервере.

ответ

1

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

enter image description here

+0

Это сработало. Хотя я кое-что заметил; используя ваше изображение выше в качестве примера, если 'com.netflix' установлен на более низком уровне ведения журнала,' com' больше не имеет «управления» над 'com.netflix'. Чтобы уточнить, если 'com' находится в' INFO', то 'com.netflix' также будет находиться в' INFO'. Если мы установим 'com.netflix' в' DEBUG', 'com' больше не ограничивает' com.netflix' уровнем его ведения журнала. – Kihats

+0

Да, так все работает в журнале. Единственное, чего не хватает в ui, - это переключить настроенный уровень на «null», чтобы родительские регистраторы снова могли влиять на effectLevel. – joshiste

0

Добавить logging.level.ke.co.betatech=DEBUG в файле application.properties, и вы будете иметь возможность использовать регистратор, используя Logger log = Logger.getLogger("ke.co.betatech"); в любом классе сразу после SpringApplication.run() завершается.

+0

я сделал, как предложил и все потомки 'Logger.getLogger ("ke.co.betatech")' устанавливаются на уровне 'DEBUG' при запуске. Но моя проблема заключается в следующем: 1. Уметь делать это во время выполнения с помощью сервера администрирования SpringBoot. 2. 'Logger.getLogger (« ke.co.betatech »)' недоступен в списке регистраторов в SpringBoot Admin Server – Kihats