📄 simple1lineformatter.java
字号:
/* Simple1LineFormatter.java -- A simple 1-line logging formatter Copyright (C) 2006 Free Software Foundation, Inc.This file is part of GNU Classpath.GNU Classpath is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.GNU Classpath is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU Classpath; see the file COPYING. If not, write to theFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA02110-1301 USA.Linking this library statically or dynamically with other modules ismaking a combined work based on this library. Thus, the terms andconditions of the GNU General Public License cover the wholecombination.As a special exception, the copyright holders of this library give youpermission to link this library with independent modules to produce anexecutable, regardless of the license terms of these independentmodules, and to copy and distribute the resulting executable underterms of your choice, provided that you also meet, for each linkedindependent module, the terms and conditions of the license of thatmodule. An independent module is a module which is not derived fromor based on this library. If you modify this library, you may extendthis exception to your version of the library, but you are notobligated to do so. If you do not wish to do so, delete thisexception statement from your version. */package gnu.classpath.debug;import gnu.classpath.SystemProperties;import java.io.PrintWriter;import java.io.StringWriter;import java.text.DateFormat;import java.text.DecimalFormat;import java.text.NumberFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.logging.Formatter;import java.util.logging.LogRecord;/** * A simple 1-line formatter to use instead of the 2-line SimpleFormatter used * by default in the JDK logging handlers. * <p> * The fixed format of this formatter is as follows: * <p> * <ol> * <li>Date: As a yyyy-MM-dd string.</li> * <li>Time: As a HH:mm:ss.SSSS Z string.</li> * <li>Thread identifier, right-justified, and framed in an 11-digit field.</li> * <li>Class name, without its package name, left-justified, and framed in a * 32-character field.</li> * <li>Method name, left-justified, and framed in a 32-character field.</li> * <li>Level name, left-justified, and framed in a 6-character field.</li> * <li>User message and arguments.</li> * <li>Platform-dependent line-separator.</li> * <li>Optionally, if the log-record contains a thrown exception, that * exception's stack trace is appended to the output.</li> * </ol> * <p> * Here is an example of the output generated by this formatter: * <p> * <pre> * 2006-02-27 21:59:12.0881 +1100 -1343151280 EncodedKeyFactory engineGeneratePublic() FINER - ENTRY java.security.spec.X509EncodedKeySpec@b00d7fc0 * 2006-02-27 21:59:12.0887 +1100 -1343151280 EncodedKeyFactory engineGeneratePublic() FINE - Exception in DSSPublicKey.valueOf(). Ignore * java.security.InvalidParameterException: Unexpected OID: 1.2.840.113549.1.1.1 * at gnu.java.security.key.dss.DSSKeyPairX509Codec.decodePublicKey (DSSKeyPairX509Codec.java:205) * at gnu.java.security.key.dss.DSSPublicKey.valueOf (DSSPublicKey.java:136) * at gnu.java.security.jce.sig.EncodedKeyFactory.engineGeneratePublic (EncodedKeyFactory.java:218) * at java.security.KeyFactory.generatePublic (KeyFactory.java:219) * at gnu.java.security.x509.X509Certificate.parse (X509Certificate.java:657) * at gnu.java.security.x509.X509Certificate.<init> (X509Certificate.java:163) * ... * 2006-02-27 21:59:12.0895 +1100 -1343151280 RSAKeyPairX509Codec decodePublicKey() FINER - ENTRY [B@b00d7fd0 * 2006-02-27 21:59:12.0897 +1100 -1343151280 RSAKeyPairX509Codec decodePublicKey() FINER - RETURN gnu.java.security.key.rsa.GnuRSAPublicKey@b00fb940 * </pre> */public class Simple1LineFormatter extends Formatter{ private static final String DAT_PATTERN = "yyyy-MM-dd HH:mm:ss.SSSS Z "; private static final DateFormat DAT_FORMAT = new SimpleDateFormat(DAT_PATTERN); private static final String THREAD_PATTERN = " #########0;-#########0"; private static final NumberFormat THREAD_FORMAT = new DecimalFormat(THREAD_PATTERN); private static final String SPACES_32 = " "; private static final String SPACES_6 = " "; private static final String LS = SystemProperties.getProperty("line.separator"); // default 0-arguments constructor public String format(LogRecord record) { StringBuffer sb = new StringBuffer(180) .append(DAT_FORMAT.format(new Date(record.getMillis()))) .append(THREAD_FORMAT.format(record.getThreadID())) .append(" "); String s = record.getSourceClassName(); if (s == null) sb.append(SPACES_32); else { s = s.trim(); int i = s.lastIndexOf("."); if (i != - 1) s = s.substring(i + 1); s = (s + SPACES_32).substring(0, 32); } sb.append(s).append(" "); s = record.getSourceMethodName(); if (s == null) sb.append(SPACES_32); else { s = s.trim(); if (s.endsWith("()")) s = (s.trim() + SPACES_32).substring(0, 32); else s = (s.trim() + "()" + SPACES_32).substring(0, 32); } sb.append(s).append(" "); s = String.valueOf(record.getLevel()); if (s == null) sb.append(SPACES_6); else s = (s.trim() + SPACES_6).substring(0, 6); sb.append(s).append(" - ").append(formatMessage(record)).append(LS); Throwable cause = record.getThrown(); if (cause != null) { StringWriter sw = new StringWriter(); cause.printStackTrace(new PrintWriter(sw, true)); sb.append(sw.toString()); } return sb.toString(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -