package com.ming.util; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; /** * 文本记录日志 * * @author Ming * @update 2016-11-30 17:13:00 (1,使用子线程写入文本日志;2,添加异常日志记录) * */ public class LogUtil { private static String log_path = getBasePath();// 日志保存路径 private static String log_name = "yxt_log";// 日志文件名(前部分) private static boolean console_out = true;// 日志是否输出到控制台 /* * yyyy-MM: 每个月更新一个log日志 yyyy-ww: 每个星期更新一个log日志 yyyy-MM-dd: 每天更新一个log日志 * yyyy-MM-dd-a: 每天的午夜和正午更新一个log日志 yyyy-MM-dd-HH: 每小时更新一个log日志 * yyyy-MM-dd-HH-mm: 每分钟更新一个log日志 */ private static String update_hz = "yyyy-MM";// 更新日志的频率,每月更新一次 private static long max_log_size = 1024 * 1024 * 10;// 单个日志文件最大大小 10M public static void debug(String msg) { runWrite(msg, log_path, log_name + "_debug"); } public static void info(String msg) { runWrite(msg, log_path, log_name + "_info"); } public static void error(String msg) { runWrite(msg, log_path, log_name + "_error"); } public static void exception(Exception e) { String errorMessage = e.getMessage() + ""; StackTraceElement[] eArray = e.getCause().getStackTrace(); for (int i = 0; i < eArray.length; i++) { String className = e.getCause().getStackTrace()[i].getClassName(); String MethodName = e.getCause().getStackTrace()[i].getMethodName(); int LineNumber = e.getCause().getStackTrace()[i].getLineNumber(); errorMessage = errorMessage + "\n\t---" + className + "." + MethodName + ",\tline:" + LineNumber; } logResult(errorMessage, log_path, log_name + "_exception"); } /** * 日志根目录 * * @return */ public static String getBasePath() { String s = Thread.currentThread().getContextClassLoader().getResource("").getPath(); s = s.substring(0, s.indexOf("WEB-INF")) + "log" + File.separator; return s; } /** * 写日志 * * @param sWord * 要写入日志里的文本内容 */ public static void logResult(String sWord) { runWrite(sWord, log_path, log_name); } public static void logResult(String sWord, String logPath, String logName) { FileWriter writer = null; try { File dir = new File(logPath); if (!dir.exists()) { dir.mkdirs(); } String dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()); File f = new File(logPath + logName + "_" + new SimpleDateFormat(update_hz).format(new Date()) + ".txt"); if (!f.exists()) { f.createNewFile(); sWord = "AllMing 日志\r\n" + "[" + dt + "]\t" + sWord; } else { long logSize = f.length(); // 文件大小超过10M,备份 if (logSize >= max_log_size) { String backLogName = logPath + logName + new SimpleDateFormat("_yyyy-MM-dd.HHmmss.SSS").format(new Date()) + ".txt"; f.renameTo(new File(backLogName)); } } writer = new FileWriter(f, true); writer.write("[" + dt + "]\t" + sWord + "\r\n"); if (console_out) { System.out.println("[" + dt + "]\t" + sWord); } } catch (Exception e) { System.out.println("记录日志异常:" + e.toString()); e.printStackTrace(); } finally { if (writer != null) { try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void runWrite(final String sWord,final String logPath,final String logName) { new Thread() { public void run() { logResult(sWord, logPath, logName); } }.start();; } public static void main(String[] args) { for (int i = 0; i <1000; i++) { error(""+i); } } }
相关推荐
开发项目经常需要日志模块打印输出,因此封装一个日志内,供自己平时使用,有些模块重复书写浪费时间,所以直接拉下来能快速一点。
使用Java语言实现了一个简单的日志工具类 ,用于小项目中日志轻量级的管理
调用方法:IndexDataLog.print(入参),可以设置文件大小,文件写满以后自动创建新的日志文件。一般用来记录用户的搜索词,或操作记录。目前以json格式保存日志,入参稍作修改,可以传入对象,linux和windows都支持。
Java日志工具类,支持控制台输出日志信息,也支持用文件持久化日志信息。有配置文件log.config可以配置。
[工具类] 记录log日志文件的工具类 .java.txt [工具类] 连接数据库的工具类 .java.txt [工具类] 使用Java程序来实现HTTP文件的队列下载 .java.txt [工具类] 文件操作工具类 .java.txt [工具类] 序列化保存为XML文件...
[工具类] 记录log日志文件的工具类 .java.txt [工具类] 连接数据库的工具类 .java.txt [工具类] 使用Java程序来实现HTTP文件的队列下载 .java.txt [工具类] 文件操作工具类 .java.txt [工具类] 序列化保存为XML文件...
java通用异常处理类,日志处理类Log,不用重启程序,动态读取配置文件
[工具类] 记录log日志文件的工具类 .java [工具类] 连接数据库的工具类 .java [工具类] 使用Java程序来实现HTTP文件的队列下载 .java [工具类] 文件操作工具类 .java [工具类] 序列化保存为XML文件的工具类 ....
自定义日志工具类Log4jHTMLLayout.java
自定义日志工具类LoggerInterceptor.java
自己整理的java常用的工具类,字符串、日期,文件,连接多个数据库,MD5,ftp二进制与ascii传输方式区别,日志管理等等等常用类处理
如果是项目比较大,所要花费的工作量也真不少,但如果使用了上面的方式,则只需要实现“LoggerAdapter”接口,使之与具体的日志(logger)进行适配,并且(如果必要)重写或者调整LoggerAdapterFacory类即可。...
Sqlplus developer 的sql格式化工具提取。及使用教程。
java实现的String,Date,Number,base64、MD5、3DES等编码,以及ftp/sftp,log4j日志等等工具类
主要介绍的Java代码工具类是用于书写日志信息到指定的文件,并且具有删除之前日志文件的功能,需要的朋友可以参考下
xwork-core-2.1.6.jar Command模式框架,WebWork和Struts2都基于xworkcommons-logging-1.0.4.jar Java日志工具类包 freemarker-2.3.15.jar 表现层框架,定义了struts2的可视组件主题 ognl-2.7.3.jar OGNL表达式语言...
1、Utils工具类有String工具类、XmlNode节点工具类、BeanFactory相关、Common工具类、Cookie工具类、Date工具类、Http工具类、JDBC工具类、日志Log工具类、Servlet相关等。2、工具类省了重复造轮子的工作,可以直接...
FTP工具类,包括:文件夹上传下载,文件删除(包括非空文件夹),重命名等操作 基本的操作应该都有
anylog 是一个可以在代码的任意区域无入侵地加入日志的工具,适用于线上问题排查。 anylog 为开发人员提供一个易于使用的平台,帮助开发人员在正在运行的系统中随时加入自己想要的日志,而免于修改代码和重启。 ...
java 线程Dump 分析工具: Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的...