自己写个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=2
Logger.level=9
Logger.file.path=D:\\CD\\tomcat_yyy\\webapps\\ATS\\WEB-INF\\classes\\logs
Logger.file.name=yyy_server.log
Logger.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;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值