NutzCN Logo
问答 slog_plugin如何记录异常?
发布于 2452天前 作者 qq_d6d46f6d 1841 次浏览 复制 上一个帖子 下一个帖子
标签:

after,before都可以记录导,请问异常该怎么写?
@Slog(tag="处理", before="方法名称mtd=${args[0]}",after="返回值=${re}",error="异常信息=${e.detailMessage}")
这样写吗?

16 回复

after,before都可以记录表中,请问需要记录异常的话该怎么写?

${e.getMessage()}

测试如下,并没有被插入呢。

 @At("/testError")
    @Ok("json")
    @Slog(tag="日志处理",error="异常信息=${e.getMessage()}")
    public void testAopError(NutMap map, HttpServletRequest req) {
        try{
            throw new RuntimeException("test_exception");
        } catch(Exception e)
        {
        }

    }

抛出去才有啊....

执行log的过程中,有这样一句

   Class<?> klass = re.getClass();

如果出现异常的时候,这里的re是空的
会报空指针

DEBUG - slog fail
java.lang.NullPointerException

另外Ctx的作用是拼接成一个吧,

    ctx.set("obj", obj);
            ctx.set("args", args);
            ctx.set("re", re);
            ctx.set("return", re);
            ctx.set("req", Mvcs.getReq());
            ctx.set("resp", Mvcs.getResp());

请问这里不对异常e做处理吗?

那是1.r.60以下的nutz才可能遇到的问题, 你用的是老版本的nutz???

slog内部抛异常, 是不会走error的

1.59,我赶紧去试试了

终于可以写入异常日志,还有一个问题,
请问,对于一个方法,有插入多条after跟before 日志的情况下,如何判断那些条是属于一次操作的。

那得扩展一下,每次调用生成一个id了

请问如何扩展?

例如注册一个EL函数

使用SLog 的话,方法内部的某一个参数,能记录吗?

比如 createDt

  public static boolean isNeedRefresh(String createStamp, int expireTime) {
        Long current = System.currentTimeMillis();//当前时间
        Long createDt = Long.valueOf(createStamp);//创建时间
        Long expire = Long.valueOf(expireTime) * 1000;//到期时间毫秒
        long oneDaySec = 24 * 3600 * 1000;//提前一天
        if (current - createDt >= expire - oneDaySec) {//当前时间-创建时间 >= 提前到期一天
            return true;
        } else {
            return false;
        }
    }

并不能,但是ThreadLocal可以

可以在req里面放个识别id

添加回复
请先登陆
回到顶部