BUG-5790: BGP Test tool
[bgpcep.git] / testtool-util / src / main / java / org / opendaylight / protocol / util / LoggerUtil.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.protocol.util;
10
11 import ch.qos.logback.classic.Level;
12 import ch.qos.logback.classic.LoggerContext;
13 import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
14 import ch.qos.logback.classic.spi.ILoggingEvent;
15 import ch.qos.logback.core.ConsoleAppender;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
18
19 public final class LoggerUtil {
20     private LoggerUtil() {
21         throw new UnsupportedOperationException();
22     }
23
24     public static void initiateLogger(final ArgumentsInput arguments) {
25         final LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
26         final ConsoleAppender<ILoggingEvent> consoleAppender = createConsoleAppender(loggerContext);
27         setLogLevel(consoleAppender, Level.OFF, Logger.ROOT_LOGGER_NAME);
28         setLogLevel(consoleAppender, arguments.getLogLevel(), "org.opendaylight.protocol");
29     }
30
31     private static ConsoleAppender<ILoggingEvent> createConsoleAppender(final LoggerContext loggerContext) {
32         final PatternLayoutEncoder ple = new PatternLayoutEncoder();
33         ple.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{10} - %msg%n");
34         ple.setContext(loggerContext);
35         ple.start();
36
37         final ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<>();
38         consoleAppender.setContext(loggerContext);
39         consoleAppender.setEncoder(ple);
40         consoleAppender.setName("STDOUT");
41         consoleAppender.start();
42         return consoleAppender;
43     }
44
45     private static void setLogLevel(final ConsoleAppender<ILoggingEvent> consoleAppender, final Level level, final String clazz) {
46         final ch.qos.logback.classic.Logger protocolLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(clazz);
47         protocolLogger.addAppender(consoleAppender);
48         protocolLogger.setLevel(level);
49         protocolLogger.setAdditive(false);
50     }
51 }