📄 logger.java
字号:
// jTDS JDBC Driver for Microsoft SQL Server and Sybase// Copyright (C) 2004 The jTDS Project//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//package net.sourceforge.jtds.util;import java.sql.*;import java.io.PrintWriter;import java.io.FileOutputStream;import java.io.IOException;/** * Class providing static methods to log diagnostics. * <p> * There are three ways to enable logging: * <ol> * <li>Pass a valid PrintWriter to DriverManager.setLogWriter(). * <li>Pass a valid PrintWriter to DataSource.setLogWriter(). * <li>For backwards compatibility call Logger.setActive(); * </ol> * * @author Mike Hutchinson * @version $Id: Logger.java,v 1.11 2005/04/20 16:49:31 alin_sinpalean Exp $ */public class Logger { /** PrintWriter stream set by DataSource. */ private static PrintWriter log; /** * Set the logging PrintWriter stream. * * @param out the PrintWriter stream */ public static void setLogWriter(PrintWriter out) { log = out; } /** * Get the logging PrintWriter Stream. * * @return the logging stream as a <code>PrintWriter</code> */ public static PrintWriter getLogWriter() { return log; } /** * Retrieve the active status of the logger. * * @return <code>boolean</code> true if logging enabled */ public static boolean isActive() { return(log != null || DriverManager.getLogWriter() != null); } /** * Print a diagnostic message to the output stream provided by * the DataSource or the DriverManager. * * @param message the diagnostic message to print */ public static void println(String message) { if (log != null) { log.println(message); } else { DriverManager.println(message); } } private static final char hex[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; /** * Print a dump of the current input or output network packet. * * @param streamId the owner of this packet * @param in true if this is an input packet * @param pkt the packet data */ public static void logPacket(int streamId, boolean in, byte[] pkt) { int len = ((pkt[2] & 0xFF) << 8)| (pkt[3] & 0xFF); StringBuffer line = new StringBuffer(80); line.append("----- Stream #"); line.append(streamId); line.append(in ? " read" : " send"); line.append((pkt[1] != 0) ? " last " : " "); switch (pkt[0]) { case 1: line.append("Request packet "); break; case 2: line.append("Login packet "); break; case 3: line.append("RPC packet "); break; case 4: line.append("Reply packet "); break; case 6: line.append("Cancel packet "); break; case 14: line.append("XA control packet "); break; case 15: line.append("TDS5 Request packet "); break; case 16: line.append("MS Login packet "); break; case 17: line.append("NTLM Authentication packet "); break; case 18: line.append("MS Prelogin packet "); break; default: line.append("Invalid packet "); break; } println(line.toString()); println(""); line.setLength(0); for (int i = 0; i < len; i += 16) { if (i < 1000) { line.append(' '); } if (i < 100) { line.append(' '); } if (i < 10) { line.append(' '); } line.append(i); line.append(':').append(' '); int j = 0; for (; j < 16 && i + j < len; j++) { int val = pkt[i+j] & 0xFF; line.append(hex[val >> 4]); line.append(hex[val & 0x0F]); line.append(' '); } for (; j < 16 ; j++) { line.append(" "); } line.append('|'); for (j = 0; j < 16 && i + j < len; j++) { int val = pkt[i + j] & 0xFF; if (val > 31 && val < 127) { line.append((char) val); } else { line.append(' '); } } line.append('|'); println(line.toString()); line.setLength(0); } println(""); } /** * Print an Exception stack trace to the log. * * @param e the exception to log */ public static void logException(Exception e) { if (log != null) { e.printStackTrace(log); } else if (DriverManager.getLogWriter() != null) { e.printStackTrace(DriverManager.getLogWriter()); } } // // Backward compatbility method // /** * Turn the logging on or off. * * @deprecated Use the JDBC standard mechanisms to enable logging. * @param value true to turn on logging */ public static void setActive(boolean value) { if (value && log == null) { try { log = new PrintWriter(new FileOutputStream("log.out"), true); } catch (IOException e) { log = null; // Sorry no logging! } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -