接口自己定义,对其中某个方法每次运行的成功与否进行记录。
第一:
将方法用try/catch/finally进行包裹,捕捉该方法随时可能抛出的异常信息。
拓展:try/catch/finally
它是java里面特定的捕捉某个方法异常信息的方法,try包裹容易出现错误的代码,catch-当执行try包裹的代码出现异常时捕获
捕获异常方法有:捕捉异常在catch捕捉
//这个方法虽然可以获得异常,但是仅仅能获得提示异常,例如空指针,异常转换,未注入等
getMessage()
//该方法将获得抛出的异常组,它返回的是一个数组,大家可以知道在控制台我们平常测试时,异常信息都是以组的//形势展现出来,一行一行就是一个下标,可以自己下去测试一下
getStackTrace();---->返回为StackTraceElement[]
//对数组循环取出
int length = stackTrace.length;
for (int i = 0; i <length; i++) {
stringBuffer.append("\t"+stackTrace[i].toString()+"\n");
}
finally:它的意思就是说不管你这行代码到底错误与否,只要在finally包裹的都会执行,所以我们通常在finally返回异常信息
第二:
创建文件夹,通常情况下为txt文本,如果是服务器也可以output文本都可以。
创建文件夹,自行选择某个目录,我这里就是服务器目录下的 /usr/
逻辑就是-如果该目录下存在(记录日志的文本-待会儿需要我们创建,并写入信息),就写入信息,如果不存在就创建
注意:服务器(linux)目录和Windows目录有一定的区别,windows一般需要将目录转义
例如:windows目录---D盘下 就可以这样写---------------> "D:\\"(双斜杠代表转义)
服务器目录----usr目录下 就可以这样写------------->"/usr/"(单斜杠就OK)
JAVA提供了多种文件夹创建的方式,我这里演示其中一种,核心代码如下
//loggerBg 是我在配置文件里面写的路径
/**
*我在配置文件里面这样写的
*web:
logger-bg: /usr/
*/
//然后在你的代码里面引入,通过注解@Value
@Value("${web.logger-bg})
private String loggerBg;
catch (Exception e) {
StringBuffer stringBuffer=new StringBuffer();
//异常头信息
stringBuffer.append("\t"+e.getMessage()+"\n");
StackTraceElement[] stackTrace = e.getStackTrace();
int length = stackTrace.length;
for (int i = 0; i <length; i++) {
stringBuffer.append("\t"+stackTrace[i].toString()+"\n");
}
//String loggerbg = printWriter.toString();
errorMessage = stringBuffer.toString();
} finally {
//String path = "D:\\loggBao.txt";
String path = loggerBg+"loggBao.txt";
File file = new File(path);
PrintStream printStream = null;
try {
//这里使用fileOutputStream 进行输出流 后面的true代表不会覆盖之前写入的数据
printStream = new PrintStream(new FileOutputStream(path,true));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
if (!StringUtils.isEmpty(errorMessage)) {
//如果存在该文件
if (file.exists()) try {
printStream.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(Calendar.getInstance().getTime()));
printStream.println(errorMessage);
} catch (Exception e1) {
e1.printStackTrace();
}
else {
try {
file.createNewFile();
printStream.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(Calendar.getInstance().getTime()));
printStream.println(errorMessage);
} catch (IOException e) {
e.printStackTrace();
}
}
}else {
if (file.exists()) try {
printStream.println("\n"+new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(Calendar.getInstance().getTime())+"程序未报异常");
}catch (Exception e){
e.printStackTrace();
}else{
try {
file.createNewFile();
printStream.println("\n"+new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(Calendar.getInstance().getTime())+"程序未报异常");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
自此,实时监控异常信息记录日志完成,如果是服务器目录,别忘了提前将目录赋予该有的权限,~~
Q2509647976 VX:x331191249 欢迎一块交流 有问题随时沟通