BUG-5790: BGP Test tool
[bgpcep.git] / testtool-util / src / main / java / org / opendaylight / protocol / util / LoggerUtil.java
diff --git a/testtool-util/src/main/java/org/opendaylight/protocol/util/LoggerUtil.java b/testtool-util/src/main/java/org/opendaylight/protocol/util/LoggerUtil.java
new file mode 100644 (file)
index 0000000..dbbaedf
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.protocol.util;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.ConsoleAppender;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public final class LoggerUtil {
+    private LoggerUtil() {
+        throw new UnsupportedOperationException();
+    }
+
+    public static void initiateLogger(final ArgumentsInput arguments) {
+        final LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
+        final ConsoleAppender<ILoggingEvent> consoleAppender = createConsoleAppender(loggerContext);
+        setLogLevel(consoleAppender, Level.OFF, Logger.ROOT_LOGGER_NAME);
+        setLogLevel(consoleAppender, arguments.getLogLevel(), "org.opendaylight.protocol");
+    }
+
+    private static ConsoleAppender<ILoggingEvent> createConsoleAppender(final LoggerContext loggerContext) {
+        final PatternLayoutEncoder ple = new PatternLayoutEncoder();
+        ple.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{10} - %msg%n");
+        ple.setContext(loggerContext);
+        ple.start();
+
+        final ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<>();
+        consoleAppender.setContext(loggerContext);
+        consoleAppender.setEncoder(ple);
+        consoleAppender.setName("STDOUT");
+        consoleAppender.start();
+        return consoleAppender;
+    }
+
+    private static void setLogLevel(final ConsoleAppender<ILoggingEvent> consoleAppender, final Level level, final String clazz) {
+        final ch.qos.logback.classic.Logger protocolLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(clazz);
+        protocolLogger.addAppender(consoleAppender);
+        protocolLogger.setLevel(level);
+        protocolLogger.setAdditive(false);
+    }
+}