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 写日志记录到指定目录下(一天一个文档)
android--java写日志文件 android--java写日志文件 android--java写日志文件android--java写日志文件
主要介绍了一个自己写的java日志类和方法,下面把代码分享给大家
Java日志工具类,支持控制台输出日志信息,也支持用文件持久化日志信息。有配置文件log.config可以配置。
使用Java语言实现了一个简单的日志工具类 ,用于小项目中日志轻量级的管理
调用方法:IndexDataLog.print(入参),可以设置文件大小,文件写满以后自动创建新的日志文件。一般用来记录用户的搜索词,或操作记录。目前以json格式保存日志,入参稍作修改,可以传入对象,linux和windows都支持。
一个Java开发的轻量级分布式日志标记追踪神器 一个Java开发的轻量级分布式日志标记追踪神器 一个Java开发的轻量级分布式日志标记追踪神器 一个Java开发的轻量级分布式日志标记追踪神器 一个Java开发的轻量级...
[工具类] 记录log日志文件的工具类 .java.txt [工具类] 连接数据库的工具类 .java.txt [工具类] 使用Java程序来实现HTTP文件的队列下载 .java.txt [工具类] 文件操作工具类 .java.txt [工具类] 序列化保存为XML文件...
主要介绍了自己写的简易版Java日志类分享,本文直接给出实现代码,需要的朋友可以参考下
java学习日志
自定义日志模块(接口及代理实现),而不直接使用第三方日志框架接口,避免在日志框架升级或者切换时,代码过多耦合。 这个举例说明一下: 比如,在某一项目开始时使用的是“log4j”框架,后面经过研究发现“sf4j...
java通用异常处理类,日志处理类Log,不用重启程序,动态读取配置文件
java写一个日志程序。。。。。。。。。。。。
使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中...
开发项目经常需要日志模块打印输出,因此封装一个日志内,供自己平时使用,有些模块重复书写浪费时间,所以直接拉下来能快速一点。
今日给大家介绍一下java 日志的数据脱敏的实现方法,可以更好的保护数据的安全,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
log4j.rar java写LOG日志的驱动 java log4j 驱动
efk7.13搜集java日志—filebeat配置详解笔记总结
保存日志的一个java类文件及时查看错误信息