java的log类_JAVA日志工具类

packagecom.ming.util;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.Date;/*** 文本记录日志

*

*@authorMing

* @update 2016-11-30 17:13:00 (1,使用子线程写入文本日志;2,添加异常日志记录)

**/

public classLogUtil {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 voiddebug(String msg) {

runWrite(msg, log_path, log_name+ "_debug");

}public static voidinfo(String msg) {

runWrite(msg, log_path, log_name+ "_info");

}public static voiderror(String msg) {

runWrite(msg, log_path, log_name+ "_error");

}public static voidexception(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 staticString getBasePath() {

String s= Thread.currentThread().getContextClassLoader().getResource("").getPath();

s= s.substring(0, s.indexOf("WEB-INF")) + "log" +File.separator;returns;

}/*** 写日志

*

*@paramsWord

* 要写入日志里的文本内容*/

public static voidlogResult(String sWord) {

runWrite(sWord, log_path, log_name);

}public static voidlogResult(String sWord, String logPath, String logName) {

FileWriter writer= null;try{

File dir= newFile(logPath);if (!dir.exists()) {

dir.mkdirs();

}

String dt= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(newDate());

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(newFile(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,finalString logName) {newThread() {public voidrun() {

logResult(sWord, logPath, logName);

}

}.start();;

}public static voidmain(String[] args) {for (int i = 0; i <1000; i++) {

error(""+i);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值