📄 colorconsoleappender.java
字号:
/* * 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -