Package org.hive2hive.client.menu

Source Code of org.hive2hive.client.menu.LoggerMenu

package org.hive2hive.client.menu;

import java.text.SimpleDateFormat;

import org.hive2hive.client.console.ConsoleMenu;
import org.hive2hive.client.console.H2HConsoleMenuItem;
import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
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.FileAppender;

public class LoggerMenu extends ConsoleMenu {

  @Override
  protected void addMenuItems() {

    add(new H2HConsoleMenuItem("Yes") {
      protected void execute() throws Exception {
        String logFileName = createRootLogger();
        print(String.format("Log file '%s' has been created.", logFileName));
        exit();
      }
    });
    add(new H2HConsoleMenuItem("No") {
      protected void execute() throws Exception {
        // logback.xml defines nothing by default
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        loggerContext.reset();
        exit();
      }
    });
  }

  @Override
  protected String getInstruction() {
    return "Do you want this session to be logged?";
  }

  @Override
  protected String getExitItemText() {
    return "Cancel";
  }

  private static String createRootLogger() {
    LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
    PatternLayoutEncoder ple = new PatternLayoutEncoder();

    ple.setPattern("%d{HH:mm:ss} %-12.-12([%thread])[%-5level] %logger{0} -%msg%n");
    ple.setContext(loggerContext);
    ple.start();

    String fileName = String.format("logs/h2h-log %s.txt",
        new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss").format(System.currentTimeMillis()));
    FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>();
    fileAppender.setFile(fileName);
    fileAppender.setEncoder(ple);
    fileAppender.setContext(loggerContext);
    fileAppender.start();

    Logger logbackLogger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
    logbackLogger.addAppender(fileAppender);
    logbackLogger.setLevel(Level.DEBUG);
    logbackLogger.setAdditive(false);

    return fileName;
  }
}
TOP

Related Classes of org.hive2hive.client.menu.LoggerMenu

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.