package com.log;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
public class LogUtils {
public static String level = "error";//默认是error级别的
public static String logFile = null;
static {
try{
InputStream in = new BufferedInputStream(new FileInputStream("src/demo.properties")) ;
Properties p = new Properties();
p.load(in);
level = p.getProperty("level");//这里重置掉上面的级别
logFile = p.getProperty("logFile");//读取日志打印目录文件
}catch (IOException e){
e.printStackTrace();
}
}
public static void info(Exception e,String msg){
if(level.equals("info") || level.equals("debug") || level.equals("error")){
System.out.println("info msg = " + msg);
log(e,msg);
}
}
public static void debug(Exception e,String msg){
if(level.equals("debug") || level.equals("error")){
System.out.println("debug msg = " + msg);
log(e,msg);
}
}
public static void error(Exception e,String msg){
if(level.equals("error") || level.equals("info") || level.equals("debug")){
System.out.println("error msg = " + msg+" 异常:" + e.getMessage());
log(e,msg);
}
}
/**
* 记录日志
* @param ex 这个异常信息
* @param msg 自定义信息
*/
private static void log(Exception ex,String msg){
try {
StringBuilder sbr = new StringBuilder();
StackTraceElement[] trace = ex.getStackTrace();
for (StackTraceElement traceElement : trace) {
sbr.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "|at " + traceElement);
}
Throwable ourCause = ex.getCause();
if (ourCause != null) {
sbr.append(trace);
}
sbr.append(ex.getMessage());
BufferedWriter bw = new BufferedWriter(new FileWriter(logFile));
bw.write(sbr.toString()+"\n");
bw.close();
}catch (IOException e){
e.printStackTrace();
}
}
}