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 ch.qos.logback.core.status.Status;
19 import org.slf4j.LoggerFactory;
21 import ch.qos.logback.classic.LoggerContext;
22 import ch.qos.logback.core.status.StatusBase;
23 import ch.qos.logback.core.status.StatusListener;
24 import ch.qos.logback.core.status.StatusManager;
26 public class LogbackStatusListener implements StatusListener,
27 LogbackRuntimeMXBean, Closeable {
29 private final List<StatusTO> receivedStatuses;
30 private final LogbackRuntimeRegistrator rootRuntimeBeanRegistratorWrapper;
31 private LogbackRuntimeRegistration reg;
33 public LogbackStatusListener(
34 LogbackRuntimeRegistrator rootRuntimeBeanRegistratorWrapper) {
35 receivedStatuses = new ArrayList<>();
36 this.rootRuntimeBeanRegistratorWrapper = rootRuntimeBeanRegistratorWrapper;
40 public synchronized List<StatusTO> getStatusTO() {
41 return Collections.unmodifiableList(receivedStatuses);
45 public synchronized void reset() {
46 receivedStatuses.clear();
49 public LogbackRuntimeRegistration register() {
50 reg = registerToJMX(rootRuntimeBeanRegistratorWrapper);
55 private LogbackRuntimeRegistration registerToJMX(
56 LogbackRuntimeRegistrator rootRuntimeBeanRegistratorWrapper) {
57 return rootRuntimeBeanRegistratorWrapper.register(this);
60 private synchronized void registerToLogback() {
61 LoggerContext context = (LoggerContext) LoggerFactory
63 final StatusManager statusManager = context.getStatusManager();
65 statusManager.remove(this);
68 statusManager.add(this);
69 addInitialStatuses(statusManager);
72 private void addInitialStatuses(StatusManager statusManager) {
73 for (ch.qos.logback.core.status.Status status : statusManager
74 .getCopyOfStatusList()) {
75 addStatusEvent(status);
80 public synchronized void addStatusEvent(
81 ch.qos.logback.core.status.Status status) {
82 receivedStatuses.add(transformStatus(status));
85 private StatusTO transformStatus(ch.qos.logback.core.status.Status status) {
86 StatusTO transformed = new StatusTO();
88 transformed.setDate(status.getDate());
89 transformed.setLevel(transformStatusLevel(status.getLevel()));
90 transformed.setMessage(status.getMessage());
95 private String transformStatusLevel(int status) {
101 case StatusBase.ERROR:
104 throw new IllegalStateException("Unknown status level " + status);
109 public void close() throws IOException {
112 unregisterFromLogback();
115 private void unregisterFromLogback() {
116 LoggerContext context = (LoggerContext) LoggerFactory
117 .getILoggerFactory();
118 final StatusManager statusManager = context.getStatusManager();
119 statusManager.remove(this);