4 * Generated from: yang module name: config-test yang module local name: testing
5 * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
6 * Generated at: Fri Sep 27 14:06:33 CEST 2013
8 * Do not modify this file unless it is present under src/main directory
10 package org.opendaylight.controller.config.yang.logback.config;
12 import java.io.Closeable;
13 import java.io.IOException;
14 import java.util.ArrayList;
15 import java.util.Collections;
16 import java.util.List;
18 import org.slf4j.LoggerFactory;
20 import ch.qos.logback.classic.LoggerContext;
21 import ch.qos.logback.core.status.StatusBase;
22 import ch.qos.logback.core.status.StatusListener;
23 import ch.qos.logback.core.status.StatusManager;
25 public class LogbackStatusListener implements StatusListener, LogbackRuntimeMXBean, Closeable {
27 private final List<StatusTO> receivedStatuses;
28 private final LogbackRuntimeRegistrator rootRuntimeBeanRegistratorWrapper;
29 private LogbackRuntimeRegistration reg;
31 public LogbackStatusListener(LogbackRuntimeRegistrator rootRuntimeBeanRegistratorWrapper) {
32 receivedStatuses = new ArrayList<>();
33 this.rootRuntimeBeanRegistratorWrapper = rootRuntimeBeanRegistratorWrapper;
37 public synchronized List<StatusTO> getStatusTO() {
38 return Collections.unmodifiableList(receivedStatuses);
42 public synchronized void reset() {
43 receivedStatuses.clear();
46 public LogbackRuntimeRegistration register() {
47 reg = registerToJMX(rootRuntimeBeanRegistratorWrapper);
52 private LogbackRuntimeRegistration registerToJMX(LogbackRuntimeRegistrator rootRuntimeBeanRegistratorWrapper) {
53 return rootRuntimeBeanRegistratorWrapper.register(this);
56 private synchronized void registerToLogback() {
57 LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
58 final StatusManager statusManager = context.getStatusManager();
60 statusManager.remove(this);
63 statusManager.add(this);
64 addInitialStatuses(statusManager);
67 private void addInitialStatuses(StatusManager statusManager) {
68 for (ch.qos.logback.core.status.Status status : statusManager.getCopyOfStatusList()) {
69 addStatusEvent(status);
74 public synchronized void addStatusEvent(ch.qos.logback.core.status.Status status) {
75 receivedStatuses.add(transformStatus(status));
78 private StatusTO transformStatus(ch.qos.logback.core.status.Status status) {
79 StatusTO transformed = new StatusTO();
81 transformed.setDate(status.getDate());
82 transformed.setLevel(transformStatusLevel(status.getLevel()));
83 transformed.setMessage(status.getMessage());
88 private String transformStatusLevel(int status) {
94 case StatusBase.ERROR:
97 throw new IllegalStateException("Unknown status level " + status);
102 public void close() throws IOException {
105 unregisterFromLogback();
108 private void unregisterFromLogback() {
109 LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
110 final StatusManager statusManager = context.getStatusManager();
111 statusManager.remove(this);