`

自己写个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;
    }

}

 

分享到:
评论

相关推荐

    java日志处理类

    java日志处理类

    java写日志文件

    java 写日志记录到指定目录下(一天一个文档)

    android--java写日志文件

    android--java写日志文件 android--java写日志文件 android--java写日志文件android--java写日志文件

    自己写的java日志类和方法代码分享

    主要介绍了一个自己写的java日志类和方法,下面把代码分享给大家

    Java自定义日志工具类

    Java日志工具类,支持控制台输出日志信息,也支持用文件持久化日志信息。有配置文件log.config可以配置。

    JAVA版简单日志工具类

    使用Java语言实现了一个简单的日志工具类 ,用于小项目中日志轻量级的管理

    java日志记录工具类

    调用方法:IndexDataLog.print(入参),可以设置文件大小,文件写满以后自动创建新的日志文件。一般用来记录用户的搜索词,或操作记录。目前以json格式保存日志,入参稍作修改,可以传入对象,linux和windows都支持。

    一个Java开发的轻量级分布式日志标记追踪神器.zip

    一个Java开发的轻量级分布式日志标记追踪神器 一个Java开发的轻量级分布式日志标记追踪神器 一个Java开发的轻量级分布式日志标记追踪神器 一个Java开发的轻量级分布式日志标记追踪神器 一个Java开发的轻量级...

    30个java工具类

    [工具类] 记录log日志文件的工具类 .java.txt [工具类] 连接数据库的工具类 .java.txt [工具类] 使用Java程序来实现HTTP文件的队列下载 .java.txt [工具类] 文件操作工具类 .java.txt [工具类] 序列化保存为XML文件...

    自己写的简易版Java日志类分享

    主要介绍了自己写的简易版Java日志类分享,本文直接给出实现代码,需要的朋友可以参考下

    java日志.zip

    java学习日志

    Java自定义日志模块实现

    自定义日志模块(接口及代理实现),而不直接使用第三方日志框架接口,避免在日志框架升级或者切换时,代码过多耦合。 这个举例说明一下: 比如,在某一项目开始时使用的是“log4j”框架,后面经过研究发现“sf4j...

    java工具类,日志处理类

    java通用异常处理类,日志处理类Log,不用重启程序,动态读取配置文件

    java写一个日志程序

    java写一个日志程序。。。。。。。。。。。。

    【强2】30个java工具类

    使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中...

    日志工具类-java实现

    开发项目经常需要日志模块打印输出,因此封装一个日志内,供自己平时使用,有些模块重复书写浪费时间,所以直接拉下来能快速一点。

    java 日志的数据脱敏的实现方法

    今日给大家介绍一下java 日志的数据脱敏的实现方法,可以更好的保护数据的安全,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    log4j.rar java写LOG日志的驱动

    log4j.rar java写LOG日志的驱动 java log4j 驱动

    efk7.13搜集java日志-filebeat配置详解

    efk7.13搜集java日志—filebeat配置详解笔记总结

    保存日志的java类文件

    保存日志的一个java类文件及时查看错误信息

Global site tag (gtag.js) - Google Analytics