`
明子健
  • 浏览: 576833 次
  • 性别: 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日志工具类java日志工具类 java日志工具类java日志工具类 java日志工具类java日志工具类 java日志工具类java日志工具类 java日志工具类java日志工具类 java日志工具类java日志工具类 java日志...

    日志工具类-java实现

    在Java编程中,日志工具类的实现是一个非常重要的部分,尤其在开发复杂项目时,良好的日志系统能够帮助开发者追踪程序运行状态、定位错误、分析性能等。本篇文章将详细探讨如何创建一个自定义的日志工具类,以便在...

    Java自定义日志工具类

    在给定的描述中,这个Java日志工具类不仅支持在控制台上实时显示日志信息,还具备将日志数据持久化到文件的能力。这样的设计有助于在不影响程序运行的情况下收集和保存日志,尤其是在生产环境中,当需要分析历史日志...

    JAVA版简单日志工具类

    总的来说,这个"JAVA版简单日志工具类"为小型Java项目提供了一种轻量级的日志解决方案,既满足了基本的日志记录需求,又保持了代码的简洁性和可扩展性。通过合理使用,可以在开发过程中极大地提高效率。

    java日志记录工具类

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

    30个java工具类

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

    java工具类,日志处理类

    总结来说,这个压缩包提供的内容涵盖了Java编程中的几个核心概念:工具类的实用方法、异常处理的统一策略以及灵活的日志系统。这些组件是构建健壮、可维护的Java应用的基础,对于任何Java开发者来说,理解和掌握这些...

    【强2】30个java工具类

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

    Rabbitmq工具类,java工具类RabbitmqUtil

    `RabbitmqUtil` 是一个专门为Java开发者设计的工具类,简化了与RabbitMQ交互的复杂过程,使得开发者能够更快速、更方便地发送和接收消息。 首先,我们来详细了解一下`RabbitmqUtil`工具类的主要功能: 1. **连接...

    Java常用工具类大全,工作5年精心整理.zip

    "Java常用工具类大全,工作5年精心整理.zip"这个压缩包文件很可能包含了一位有经验的Java开发者在五年工作中积累的各种实用工具类,这些工具类能够极大地提高开发效率,简化代码编写。以下是对可能包含的知识点进行...

    java常用工具类封装

    在Java编程中,工具类(Util Classes)是包含各种实用方法的静态类,它们提供了一种简化常见任务的方式。"java常用工具类封装"是指将常见的功能如线程管理、数据解析、第三方库集成等进行封装,以提高代码的可重用性...

    Java常用工具类

    Java常用工具类是Java开发中不可或缺的一部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,最著名的工具类库是`java.util`包,它包含了大量实用类,如集合、日期时间、数学计算、...

    一些java常用的工具类

    在Java编程中,工具类(Utility Classes)是非常重要的组成部分,它们提供了许多通用的功能,以简化开发人员的工作。以下是对"一些java常用的工具类"的详细说明。 首先,工具类通常包含静态方法,这些方法不依赖于...

    Elasticsearch java工具类

    在实际开发中,这个工具类可以帮助开发者更高效地实现如日志分析、用户行为追踪、推荐系统等功能。通过集成测试和示例代码,开发者可以快速理解和使用这些预封装的方法,提高开发效率,减少出错概率。 总之,...

    ffmpeg java 封装工具类,音视频处理.zip

    本压缩包提供的"ffmpeg java 封装工具类"正是为了解决这个问题,它将FFmpeg的功能与Java编程语言相结合,提供了一套易于使用的API。 一、FFmpeg Java 封装工具类介绍 这个工具类通常包括以下核心功能: 1. **命令...

    java短信服务工具类

    Java短信服务工具类是开发过程中常见的一种实用组件,主要用于实现应用程序与短信服务提供商之间的交互。在Java编程中,这样的工具类通常包含了一系列方法,用于发送、接收和处理短信。下面我们将详细探讨Java短信...

    Java常用工具类.zip

    7. **日志管理工具类**:Java的标准日志框架是`java.util.logging.Logger`,但它功能相对简单。更强大的有Log4j、SLF4J(Simple Logging Facade for Java)和Logback,它们提供了更灵活的日志配置和更丰富的日志级别...

    java开发工具类(14个)

    - Log工具类:自定义日志打印,便于调试和分析程序运行情况。 - SharedPreferences工具类:简化SharedPreferences的读写操作。 - Android权限管理工具类:处理Android运行时权限的请求和检查。 - 网络状态检测...

    android 日志工具类

    在Android开发中,日志工具类(通常称为`Logger`)是开发者进行调试和问题排查的重要工具。Android系统提供了一个内置的日志系统,允许开发者输出不同级别的日志信息,包括`VERBOSE`、`DEBUG`、`INFO`、`WARN`、`...

    jaava和jsp工具类

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

Global site tag (gtag.js) - Google Analytics