/* * 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 consoleAppender = createConsoleAppender(loggerContext); setLogLevel(consoleAppender, Level.OFF, Logger.ROOT_LOGGER_NAME); setLogLevel(consoleAppender, arguments.getLogLevel(), "org.opendaylight.protocol"); } private static ConsoleAppender 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 consoleAppender = new ConsoleAppender<>(); consoleAppender.setContext(loggerContext); consoleAppender.setEncoder(ple); consoleAppender.setName("STDOUT"); consoleAppender.start(); return consoleAppender; } private static void setLogLevel(final ConsoleAppender 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); } }