colorconsoleappender.java

来自「sea是一个基于seda模式的实现。这个设计模式将系统分为很多stage。每个s」· Java 代码 · 共 117 行

JAVA
117
字号
/* * Copyright (c) 2003, The Regents of the University of California, through * Lawrence Berkeley National Laboratory (subject to receipt of any required * approvals from the U.S. Dept. of Energy). All rights reserved. */package gov.lbl.dsd.sea.nio.util;import org.apache.log4j.ConsoleAppender;import org.apache.log4j.Layout;import org.apache.log4j.Level;import org.apache.log4j.spi.LoggingEvent;/** * Log4J Appender which prints to System.out and shows different log levels in * different colors; very useful for effectively sieving through large number of * log messages. Colors are used only on Unix, and ignored on Windows because we * don't know how to do it. (If it's possible and you know how, submit a * patch!); If you wish to use this appender let log4j know about it by adding * "log4j.appender.CONSOLE=gov.lbl.dsd.sea.nio.util.ColorConsoleAppender" to the * log4j.properties file. *  * @author whoschek@lbl.gov * @author $Author: hoschek3 $ * @version $Revision: 1.1 $, $Date: 2004/06/17 18:34:39 $ */public class ColorConsoleAppender extends ConsoleAppender {	private static final char ESCAPE = 033;	private static final String UNESCAPE = "[m";	private static final String REVERSE = "[7m";	private static final String BLACK = "[30m";	private static final String RED = "[31m";	private static final String GREEN = "[32m";	private static final String YELLOW = "[33m";	private static final String BLUE = "[34m";	private static final String PURPLE = "[35m";	private static final String CYAN = "[36m";	private static final String SILVER = "[37m";	private static final String WHITE = "[38m";			private static final boolean isWindows = System.getProperty("os.name").startsWith("Windows");	// overridden	protected void subAppend(LoggingEvent event) {		this.qw.write(formatEvent(event));		if (layout.ignoresThrowable()) {			String[] s = event.getThrowableStrRep();			if (s != null) {				int len = s.length;				for (int i = 0; i < len; i++) {					if (!isWindows) {						this.qw.write(toColorString(event.getLevel()).toString());											}					this.qw.write(s[i]);					if (!isWindows) {						this.qw.write(ESCAPE + UNESCAPE);											}					this.qw.write(Layout.LINE_SEP);				}			}		}		if (this.immediateFlush) {			this.qw.flush();		}	}	protected String formatEvent(LoggingEvent event) {		String toPrint = this.layout.format(event);		if (isWindows) {			return toPrint;		} 		else {			StringBuffer s = this.toColorString(event.getLevel());						//remove newline			s.append(toPrint.substring(0, toPrint.length() - 1));			// reset colors			s.append(ESCAPE).append(UNESCAPE);						s.append(Layout.LINE_SEP);			return s.toString();		}	}	protected StringBuffer toColorString(Level level) {		StringBuffer s = new StringBuffer(2);		s.append(ESCAPE);				switch (level.toInt()) {			case Level.ERROR_INT:				s.append(RED);				break;			case Level.WARN_INT:				s.append(PURPLE);				break;			case Level.INFO_INT:				s.append(GREEN);				break;			case Level.FATAL_INT:				s.append(RED).append(ESCAPE).append(REVERSE);				break;			case Level.DEBUG_INT:				s.append(BLUE);				break;			default:				s.append(CYAN);				break;		}		return s;	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?