NutzCN Logo
精华 @SLog 操作日志没有记录信息,怎么排查?
发布于 3043天前 作者 qq_a930202f 1784 次浏览 复制 上一个帖子 下一个帖子
标签:

日志记录功能的代码完全copy自nutz-book-project,集成到现有的项目。但是没有任何效果,运行时也不报错。如何排查是哪的问题?

13 回复

copy之后, package改了没?

@wendal 改了,编译也没报错。运行也没报错。好像什么都没干一样。。。。

在启动日志中搜索syslog和slog字样, 贴出来看看, 或者整个启动日志贴一下.

2016-07-23 11:17:00 [localhost-startStop-1] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader -Found : class com.base.service.log.SysLogAopConfigration
2016-07-23 11:17:00 [localhost-startStop-1] DEBUG org.nutz.ioc.loader.annotation.AnnotationIocLoader -Found : class com.base.service.log.SysLogService
 2016-07-23 11:17:01 [localhost-startStop-1] DEBUG org.nutz.ioc.impl.NutIoc -	 >> Make...'$aop_syslog'<interface org.nutz.ioc.aop.config.AopConfigration>
2016-07-23 11:17:01 [localhost-startStop-1] DEBUG org.nutz.ioc.impl.ScopeContext -Save object '$aop_syslog' to [app] 
2016-07-23 11:17:01 [localhost-startStop-1] DEBUG org.nutz.ioc.aop.SimpleAopMaker -Load AopConfigure for anno=com.base.annotation.SLog by type=com.base.service.log.SysLogAopConfigration
2016-07-23 11:17:01 [localhost-startStop-1] DEBUG org.nutz.ioc.impl.NutIoc -Get 'sysLogService'<class com.base.service.log.SysLogService>
2016-07-23 11:17:01 [localhost-startStop-1] DEBUG org.nutz.ioc.impl.NutIoc -	 >> Load definition name=sysLogService
2016-07-23 11:17:01 [localhost-startStop-1] DEBUG org.nutz.ioc.loader.combo.ComboIocLoader -Found IocObject(sysLogService) in AnnotationIocLoader(packages=[com.t])
2016-07-23 11:17:01 [localhost-startStop-1] DEBUG org.nutz.ioc.impl.NutIoc -	 >> Make...'sysLogService'<class com.base.service.log.SysLogService>
2016-07-23 11:17:01 [localhost-startStop-1] INFO  org.nutz.ioc.aop.impl.DefaultMirrorFactory -skip aop check , type=com.base.service.log.SysLogService
2016-07-23 11:17:01 [localhost-startStop-1] DEBUG org.nutz.ioc.impl.ScopeContext -Save object 'sysLogService' to [app] 
2016-07-23 11:17:01 [localhost-startStop-1] DEBUG org.nutz.service.EntityService -Get TypeParams for self : com.modules.sys.domain.SysLog

debug了一下SysLogAopInterceptor

	public void filter(InterceptorChain chain) throws Throwable {
		if (before)
			doLog("aop.before", chain, null);
		try {
			chain.doChain();
			if (after)
				doLog("aop.after", chain, null);
		} catch (Throwable e) {
			if (error)
				doLog("aop.after", chain, e);
			throw e;
		}
	}

before是false没进,after也没进

有没有进这个方法?

private方法是不行的,静态方法也不可以,final方法也是

来自炫酷的 NutzCN

filter进了,
但是before(false)没进,after也没进

@qq_a930202f 那就简单了,查查为啥before和after为啥是false就可以了嘛

来自炫酷的 NutzCN

public @interface SLog {

	String tag();
	
	String msg();
	
	boolean before() default false;
	
	boolean after() default true;
	
	boolean error() default true;
	
	boolean async() default true;
}

before是false,after没执行

@qq_a930202f 啥区别?

before默认是false,after默认是true

没执行是啥意思?after为true就执行doLog了啊,然后debug进去看执行嘛

来自炫酷的 NutzCN

after为true,但是chain.doChain();完了没执行doLog("aop.after", chain, null);。

可能吗? 这代码一路执行下去,还能跳过某个语句?

debug的不严谨- -!
进去了

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