2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.protocol.util;
10 import ch.qos.logback.classic.Level;
11 import ch.qos.logback.classic.LoggerContext;
12 import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
13 import ch.qos.logback.classic.spi.ILoggingEvent;
14 import ch.qos.logback.core.ConsoleAppender;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
18 public final class LoggerUtil {
19 private LoggerUtil() {
23 public static void initiateLogger(final ArgumentsInput arguments) {
24 final LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
25 final ConsoleAppender<ILoggingEvent> consoleAppender = createConsoleAppender(loggerContext);
26 setLogLevel(consoleAppender, Level.OFF, Logger.ROOT_LOGGER_NAME);
27 setLogLevel(consoleAppender, arguments.getLogLevel(), "org.opendaylight.protocol");
30 private static ConsoleAppender<ILoggingEvent> createConsoleAppender(final LoggerContext loggerContext) {
31 final PatternLayoutEncoder ple = new PatternLayoutEncoder();
32 ple.setPattern("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{10} - %msg%n");
33 ple.setContext(loggerContext);
36 final ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<>();
37 consoleAppender.setContext(loggerContext);
38 consoleAppender.setEncoder(ple);
39 consoleAppender.setName("STDOUT");
40 consoleAppender.start();
41 return consoleAppender;
44 private static void setLogLevel(final ConsoleAppender<ILoggingEvent> consoleAppender,
45 final Level level, final String clazz) {
46 final ch.qos.logback.classic.Logger protocolLogger
47 = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(clazz);
48 protocolLogger.addAppender(consoleAppender);
49 protocolLogger.setLevel(level);
50 protocolLogger.setAdditive(false);