`
明子健
  • 浏览: 573955 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JAVA日志工具类

阅读更多
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实现

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

    JAVA版简单日志工具类

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

    java日志记录工具类

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

    Java自定义日志工具类

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

    30个java工具类

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

    【强2】30个java工具类

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

    java工具类,日志处理类

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

    jaava和jsp工具类

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

    自定义日志工具类Log4jHTMLLayout.java

    自定义日志工具类Log4jHTMLLayout.java

    自定义日志工具类LoggerInterceptor.java

    自定义日志工具类LoggerInterceptor.java

    Java常用工具类.zip

    自己整理的java常用的工具类,字符串、日期,文件,连接多个数据库,MD5,ftp二进制与ascii传输方式区别,日志管理等等等常用类处理

    Java自定义日志模块实现

    如果是项目比较大,所要花费的工作量也真不少,但如果使用了上面的方式,则只需要实现“LoggerAdapter”接口,使之与具体的日志(logger)进行适配,并且(如果必要)重写或者调整LoggerAdapterFacory类即可。...

    Java Sql 格式化工具

    Sqlplus developer 的sql格式化工具提取。及使用教程。

    java工具类

    java实现的String,Date,Number,base64、MD5、3DES等编码,以及ftp/sftp,log4j日志等等工具类

    使用java实现日志工具类分享

    主要介绍的Java代码工具类是用于书写日志信息到指定的文件,并且具有删除之前日志文件的功能,需要的朋友可以参考下

    最新Struts2 jar 架包

    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表达式语言...

    个人总结常用经典Utils工具类

    1、Utils工具类有String工具类、XmlNode节点工具类、BeanFactory相关、Common工具类、Cookie工具类、Date工具类、Http工具类、JDBC工具类、日志Log工具类、Servlet相关等。2、工具类省了重复造轮子的工作,可以直接...

    java ,android平台FTP工具类

    FTP工具类,包括:文件夹上传下载,文件删除(包括非空文件夹),重命名等操作 基本的操作应该都有

    java动态日志注入工具anylog.zip

    anylog 是一个可以在代码的任意区域无入侵地加入日志的工具,适用于线上问题排查。 anylog 为开发人员提供一个易于使用的平台,帮助开发人员在正在运行的系统中随时加入自己想要的日志,而免于修改代码和重启。 ...

    java 线程 dump 分析工具 2.3.3

    java 线程Dump 分析工具: Java的TDA线程转储分析器是一个用于分析Sun Java VM生成的线程转储和堆信息的小型Swing GUI(目前用1.4测试)。它从提供的日志文件中解析线程转储和类直方图。它提供关于发现的线程转储的...

Global site tag (gtag.js) - Google Analytics