首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

自各儿写个java日志类及使用

2013-08-06 
自己写个java日志类及使用package xxx.common.framework.utilimport java.io.Fileimport java.io.PrintS

自己写个java日志类及使用

package xxx.common.framework.util;import java.io.File;import java.io.PrintStream;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Enumeration;import javax.servlet.ServletRequest;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;public abstract class GenericLogger  implements LoggerInterface{  public static final int APP_DEBUG = 9;  public static final int DEBUG = 8;  public static final int REQUEST = 7;  public static final int CLIENT = 6;  public static final int EVENT = 5;  public static final int STAT = 4;  public static final int INFO = 3;  public static final int CONTROL = 2;  public static final int ERROR = 1;  public static final int ALERT = 0;  protected static final int FILE_MODE = 0;  protected static final int STDOUT_MODE = 1;  protected static final int BOTH_MODE = 2;  protected PrintWriter writer = null;  protected int mode = 1;  protected int logLevel = 9;  protected String logFilePath = ".";  protected String logFileName = "logger.log";  protected GenericLogger()  {    init();    if (this.logLevel == 8)      this.logLevel = redefineDebug();  }  protected void init()  {  }  protected int redefineDebug()  {    return 8;  }  public void logAppDebug(Object msg) {    logAppDebug(null, msg);  }  public void logAppDebug(Object caller, Object msg) {    logAction(9, "APP.. ", caller, msg);  }  public void logDebug(Object msg) {    logDebug(null, msg);  }  public void logDebug(Object caller, Object msg) {    logAction(8, "DEBUG ", caller, msg);  }  public void logRequest(Object msg) {    logRequest(null, msg);  }  public void logRequest(Object caller, Object msg) {    logAction(7, "REQ.. ", caller, msg);  }  public void logClient(Object msg) {    logClient(null, msg);  }  public void logClient(Object caller, Object msg) {    logAction(6, "CLNT. ", caller, msg);  }  public void logEvent(Object msg) {    logEvent(null, msg);  }  public void logEvent(Object caller, Object msg) {    logAction(5, "EVENT ", caller, msg);  }  public void logStat(Object msg) {    logStat(null, msg);  }  public void logStat(Object caller, Object msg) {    logAction(4, "STAT. ", caller, msg);  }  public void logInfo(Object msg) {    logInfo(null, msg);  }  public void logInfo(Object caller, Object msg) {    logAction(3, "INFO. ", caller, msg);  }  public void logControl(Object msg) {    logControl(null, msg);  }  public void logControl(Object caller, Object msg) {    logAction(2, "CTRL. ", caller, msg);  }  public void logError(Object msg) {    logError(null, msg);  }  public void logError(Object caller, Object msg) {    logAction(1, "ERROR ", caller, msg);  }  public void logAlert(Object msg) {    logAlert(null, msg);  }  public void logAlert(Object caller, Object msg) {    logAction(0, "ALERT ", caller, msg);  }  protected synchronized void logAction(int level, String prefix, Object caller, Object msg) {    try {      if (shouldLog(level)) {        String message = formatMessage(prefix, formatClassName(caller) + msg);        if ((this.mode == 0) || (this.mode == 2)) {          this.writer.println(message);          this.writer.flush();        }        if ((this.mode == 1) || (this.mode == 2))          System.out.println(message);      }    }    catch (Exception e) {      System.out.println(getClass().toString() + " exception: " + e);      e.printStackTrace();    }  }  public static String formatClassName(Object caller)  {    String name = "";    if (caller != null) {      name = caller.getClass().getName();      name = name.substring(name.lastIndexOf(".") + 1, name.length());      name = "[" + name + "] ";    }    return name;  }  public static String formatMessage(String prefix, String msg) {    String pattern = "dd-MM-yyyy HH:mm:ss:SSS";    SimpleDateFormat sdf = new SimpleDateFormat(pattern);    Date current = new Date();    String dateString = "[" + sdf.format(current) + "]";    return prefix + dateString + " " + msg;  }  public static String constructFullPath(String path, String file) {    if ((path == null) || (path.trim().equals(""))) {      return file;    }    int index = path.lastIndexOf(File.separator);    if ((index < 0) || (index != path.length() - File.separator.length())) {      return path + File.separator + file;    }    return path + file;  }  protected boolean isValidLogLevel(int level) {    switch (level) { case 9:      break;    case 8:      break;    case 7:      break;    case 6:      break;    case 5:      break;    case 4:      break;    case 3:      break;    case 2:      break;    case 1:      break;    case 0:      break;    default:      String str = getClass().toString() + ": unknown log level";      System.out.println(str);      return false;    }    return true;  }  protected boolean shouldLog(int level) {    if (!isValidLogLevel(level)) {      return false;    }    if (level == 8) {      return redefineDebug() <= this.logLevel;    }    return level <= this.logLevel;  }  public int getLogLevel() {    return this.logLevel;  }  public void recording(ServletRequest request)  {    if (getLogLevel() < 7) return;    StringBuffer buffer = new StringBuffer();    String valueAction = request.getParameter("action");    if (valueAction != null) {      buffer.append("(" + valueAction + ")");    }    Enumeration e = request.getParameterNames();    while (e.hasMoreElements()) {      String parameterName = (String)e.nextElement();      if (!parameterName.equals("action"))      {        String[] values = (String[])request.getParameterValues(parameterName);        for (int i = 0; i < values.length; i++) {          String valueString = values[i];          if (valueString == null) valueString = "null";          buffer.append(" " + parameterName + "=(" + valueString + ")");        }      }    }    HttpSession session = ((HttpServletRequest)request).getSession(false);    String id = session == null ? "unknown" : session.getId();    logRequest(GenericLoggerTag.handleAction(id) + buffer);  }  public void measuringClientTime(ServletRequest request) {    if (!enableClientTimeMeasurement()) return;    String clientBeginTime = request.getParameter("client_begin_time");    String clientEndTime = request.getParameter("client_end_time");    HttpSession session = ((HttpServletRequest)request).getSession(false);    String id = session == null ? "unknown" : session.getId();    if ((clientEndTime != null) && (!clientEndTime.equals(""))) {      logClient(">> CLNT. [" + clientEndTime.replace('|', ' ') + "] " + GenericLoggerTag.endClient(id) + request.getParameter("pre_action"));    }    if ((clientBeginTime != null) && (!clientBeginTime.equals("")))      logClient(">> CLNT. [" + clientBeginTime.replace('|', ' ') + "] " + GenericLoggerTag.beginClient(id) + request.getParameter("action"));  }  public boolean enableClientTimeMeasurement()  {    return (getLogLevel() >= 6) && (getLogLevel() != 7);  }  public boolean enableClientPositionMeasurement()  {    return getLogLevel() >= 7;  }}_____________________________________package xxx.common.framework.util;public class GenericLoggerTag{  public static final String BEGIN_CLIENT = " begin.client=";  public static final String BEGIN_TESTCASE = " begin.testcase=";  public static final String ABORT_TESTCASE = " abort.testcase=";  public static final String BEGIN_ACTION = " begin.action=";  public static final String HANDLE_ACTION = " handle.action=";  public static final String DETAIL_ACTION = " detail.action=";  public static final String DETAIL_IDENTITY = " detail.identity=";  public static final String HANDLE_EVENT = "  handle.event=";  public static final String BEGIN_WEB = "  begin.web=";  public static final String BEGIN_EJB = "   begin.ejb=";  public static final String DETAIL_EJB = "   detail.ejb=";  public static final String BEGIN_SQL = "    begin.sql=";  public static final String END_SQL = "    end...sql=";  public static final String BEGIN_RS = "    begin.rs=";  public static final String END_RS = "    end...rs=";  public static final String BEGIN_CONNECT = "    begin.connect=";  public static final String END_CONNECT = "    end...connect=";  public static final String BEGIN_EAI = "    begin.eai=";  public static final String END_EAI = "    end...eai=";  public static final String END_EJB = "   end...ejb=";  public static final String END_WEB = "  end...web=";  public static final String END_ACTION = " end...action=";  public static final String END_TESTCASE = " end...testcase=";  public static final String END_CLIENT = " end...client=";  public static final String BEGIN_TASK = " begin.task=";  public static final String END_TASK = " end...task=";  public static final String REDIRECT_CLIENT = ">> CLNT. ";  public static String format(String id)  {    return "[ID=" + id + "]";  }  public static String beginAction(String id) {    return format(id) + " begin.action=";  }  public static String endAction(String id) {    return format(id) + " end...action=";  }  public static String beginWeb(String id) {    return format(id) + "  begin.web=";  }  public static String endWeb(String id) {    return format(id) + "  end...web=";  }  public static String beginEjb(String id) {    return format(id) + "   begin.ejb=";  }  public static String endEjb(String id) {    return format(id) + "   end...ejb=";  }  public static String beginTask(String id) {    return format(id) + " begin.task=";  }  public static String endTask(String id) {    return format(id) + " end...task=";  }  public static String beginClient(String id) {    return format(id) + " begin.client=";  }  public static String endClient(String id) {    return format(id) + " end...client=";  }  public static String handleEvent(String id) {    return format(id) + "  handle.event=";  }  public static String handleAction(String id) {    return format(id) + " handle.action=";  }  public static String beginSql(String id) {    return format(id) + "    begin.sql=";  }  public static String endSql(String id) {    return format(id) + "    end...sql=";  }  public static String beginRs(String id) {    return format(id) + "    begin.rs=";  }  public static String endRs(String id) {    return format(id) + "    end...rs=";  }  public static String beginConnect(String id) {    return format(id) + "    begin.connect=";  }  public static String endConnect(String id) {    return format(id) + "    end...connect=";  }  public static String beginEai(String id) {    return format(id) + "    begin.eai=";  }  public static String endEai(String id) {    return format(id) + "    end...eai=";  }  public static String beginTestcase(String id) {    return format(id) + " begin.testcase=";  }  public static String endTestcase(String id) {    return format(id) + " end...testcase=";  }  public static String abortTestcase(String id) {    return format(id) + " abort.testcase=";  }}___yyy.properties___________________________________#---------------------# Logger#---------------------Logger.mode=2Logger.level=9Logger.file.path=D:\\CD\\tomcat_yyy\\webapps\\ATS\\WEB-INF\\classes\\logsLogger.file.name=yyy_server.logLogger.debug.redefine=___AtsLogger.java______________/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.xxx.mil.application.yyy.util;/** * */import java.io.*;import xxx.common.framework.util.*;public class AtsLogger extends GenericLogger {    protected static final String MODE_KEY  = "Logger.mode";    protected static final String LEVEL_KEY = "Logger.level";    protected static final String PATH_KEY  = "Logger.file.path";    protected static final String NAME_KEY  = "Logger.file.name";    protected static final String DEBUG_KEY = "Logger.debug.redefine";    // All variables should be static to avoid being re-initalized after super()    private static int redefined = DEBUG;    // Singleton    private static AtsLogger out;    public static AtsLogger getInstance() {        if (out == null) out = new AtsLogger();        return out;    }    protected void init() {        try {            GenericResourceReader manager = AtsResourceReader.in;            mode = manager.getInt(MODE_KEY);            logLevel = manager.getInt(LEVEL_KEY);            logFilePath = manager.getSafeString(PATH_KEY);            logFileName = manager.getSafeString(NAME_KEY);            if (mode == FILE_MODE || mode == BOTH_MODE) {                String file = constructFullPath(logFilePath, logFileName);                FileWriter fw = new FileWriter(file, true);                writer = new PrintWriter(fw);            }            System.out.println("[" + getClass().toString() + "] mode=" + mode + " level=" + logLevel);        } catch (Exception e) {            mode = STDOUT_MODE;            logLevel = APP_DEBUG;            System.out.println(getClass().toString() + " init(): exception: " + e);            System.out.println(getClass().toString() + " init(): log mode is set to STDOUT");            System.out.println(getClass().toString() + " init(): log level is set to APP_DEBUG");        }        try {            GenericResourceReader manager = AtsResourceReader.in;            redefined = manager.getInt(DEBUG_KEY);        } catch (Exception e) {            redefined = DEBUG;        }    }    protected int redefineDebug() {        return redefined;    }}_______Usage__________________________________public class C1{    private AtsLogger logger = AtsLogger.getInstance();    private AtsLoggerTag loggerTag = AtsLoggerTag.getInstance();public CourseSession getCpdtsCourse(String courseCode, String sessionCode) throws Exception {        CourseSession searchCourseSession = new CourseSession();//        Logger.writeLogln("CpdtsManager.getCpdtsCourse {");        String key = courseCode + "@@" + sessionCode;        String logAction = "GetCpdtsCourse.";        logger.logRequest(loggerTag.beginAction(key)+ logAction);        searchCourseSession = getDao().searchCourseSession(courseCode, sessionCode);        logger.logRequest(loggerTag.endAction(key)+ logAction);//        Logger.writeLogln("}  //getCpdtsCourse");       return searchCourseSession;    }}

?

热点排行