Package com.baulsupp.kolja.log4j

Source Code of com.baulsupp.kolja.log4j.KoljaLogAppender

package com.baulsupp.kolja.log4j;

import java.io.IOException;
import java.util.Date;

import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.spi.LoggingEvent;

import com.baulsupp.kolja.ansi.ConsoleRenderer;
import com.baulsupp.kolja.ansi.TailRenderer;
import com.baulsupp.kolja.log.LogConstants;
import com.baulsupp.kolja.log.line.BasicLine;
import com.baulsupp.kolja.log.line.Line;
import com.baulsupp.kolja.log.line.type.Priority;
import com.baulsupp.kolja.log.viewer.importing.LogFormat;
import com.baulsupp.kolja.log.viewer.importing.SavedLogFormatLoader;
import com.baulsupp.kolja.log.viewer.renderer.Renderer;

public class KoljaLogAppender extends AppenderSkeleton {
  private ConsoleRenderer<Line> renderer = null;

  @Override
  public void activateOptions() {
    // Logger.getLogger("com.baulsupp.kolja").setLevel(Level.WARN);

    super.activateOptions();

    Renderer<Line> gridRenderer;
    try {
      LogFormat logFormat = loadFormat();
      gridRenderer = logFormat.getRenderer();
    } catch (Exception e) {
      System.err.println(e);
      gridRenderer = Log4JRenderer.create();
    }
    renderer = new TailRenderer(gridRenderer, true);
  }

  private LogFormat loadFormat() throws IOException {
    return SavedLogFormatLoader.load(name);
  }

  @Override
  protected void append(LoggingEvent arg0) {
    try {
      Line l = buildLine(arg0);
      renderer.show(l);
    } catch (Exception e) {
      System.err.println(e);
    }
  }

  private Line buildLine(LoggingEvent arg0) {
    Line line = new BasicLine(arg0.toString());

    line.setValue(LogConstants.DATE, new Date(arg0.timeStamp));
    line.setValue(LogConstants.CONTENT, arg0.getMessage());

    line.setValue(LogConstants.EXCEPTION, join(arg0.getThrowableStrRep()));
    line.setValue(LogConstants.PRIORITY, Priority.getByName(arg0.getLevel().toString()));
    line.setValue(LogConstants.LOGGER, arg0.getLoggerName());
    line.setValue(LogConstants.THREAD, arg0.getThreadName());

    return line;
  }

  private String join(String[] throwableStrRep) {
    if (throwableStrRep == null) {
      return null;
    }

    StringBuilder buffer = new StringBuilder();

    for (String string : throwableStrRep) {
      if (buffer.length() > 0) {
        buffer.append('\n');
      }

      buffer.append(string);
    }

    return buffer.toString();
  }

  @Override
  public void close() {
  }

  @Override
  public boolean requiresLayout() {
    return false;
  }
}
TOP

Related Classes of com.baulsupp.kolja.log4j.KoljaLogAppender

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.