JAVA异常信息实时监控(日志记录)

接口自己定义,对其中某个方法每次运行的成功与否进行记录。

第一:

将方法用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          欢迎一块交流  有问题随时沟通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值