请问:
1,用spring AOP+log4j是不是一个不错的选择
2,日志存放到哪里,如果是文件如何指定路径,如果是DB有如何配置
3,最好是一个完整的例子,包括配置文件谢谢了
1,用spring AOP+log4j是不是一个不错的选择
2,日志存放到哪里,如果是文件如何指定路径,如果是DB有如何配置
3,最好是一个完整的例子,包括配置文件谢谢了
解决方案 »
- 关于做报表的问题
- jsp中文超级连接问题
- 有一字符串“asdfghjkOKdddddrwertyrt”我想获取“OK”字符前的所有字符如何处理呀,请高手帮忙。
- 水晶报表导出的pdf对中文不能支持
- jsp下的:java.lang.NullPointerException问题!
- document.execCommand()的用法?
- 怎么从一个url得到跳转后的url
- 怎样在jsp中调用javascript的变量啊?大家帮忙啊
- easyUI中DataGrid的queryParams
- IE下 SCRIPT5: 拒绝访问 哪些原因可以造成这个错误?
- js如何将文件夹内的图片文件初始化为数组
- 小弟是初学者,求助如何用ajax实现两级级联操作(mysql)
log4j.appender.out2=org.apache.log4j.RollingFileAppender
log4j.appender.out2.File=E:/Prj2009/crm/mylog.txt
log4j.appender.out2.MaxFileSize=1mb
log4j.appender.out2.MaxBackupIndex=1#log4j.appender.out.layout=org.apache.log4j.SimpleLayout
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %l - %m%n log4j.appender.out2.layout=org.apache.log4j.PatternLayout
log4j.appender.out2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %l - %m%n
加入:logger.debug("xxx")之类的,就可以记入到E:/Prj2009/crm/mylog.txt
文件了吧
private static final Logger logger = Logger.getLogger(A.class);
public void xxx() {
logger.debug("错误");
}
}
2. 注解,或者xml配置
3. ioc 定义日志处理类
4. 定义aop:aspect ref指定到日志处理类,注意切入点和expression的写法
5. 返回一般有 after-return, around, before,return等 method 指定到日志处理类的具体方法
6. 在日志类里掉用log4j的功能
配置文件log4j.rootLogger=INFO,out,out2 log4j.appender.out=org.apache.log4j.ConsoleAppender
log4j.appender.out2=org.apache.log4j.RollingFileAppender
log4j.appender.out2.File=D:/workspace/spring-aop-log/mylog.txt
log4j.appender.out2.MaxFileSize=1mb
log4j.appender.out2.MaxBackupIndex=1 #log4j.appender.out.layout=org.apache.log4j.SimpleLayout
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p %l - %m%n log4j.appender.out2.layout=org.apache.log4j.PatternLayout
log4j.appender.out2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %l - %mjava代码 //切面类
@Aspect
public class MyInterceptor0 {
private static final Log log = LogFactory.getLog(PersonServiceBean.class);
@Pointcut("execution (* cn.itcast.service.impl.PersonServiceBean0.*(..))")
private void anyMethod(){}//声明一个pointcut
@Before("anyMethod() && args(name)")//增加pointcut参数限制
public void doAccessCheck(String name){
System.out.println("before advice:"+name);
log.debug("log4j-debug执行doAccessCheck");
log.error("log4j-err执行doAccessCheck");
System.out.println("before advice end");
}
} //PersonServiceBean0类的方法
public void save(String name) {
System.out.println("我是save()");
}
/**执行结果
before advice:22
2009-12-30 1:27:10 cn.itcast.service.MyInterceptor0 doAccessCheck
严重: log4j-err执行doAccessCheck
before advice end
我是save()
*/
输出的结果,显示AOP起作用了,但是mylog.txt还是空的
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
l
#File output
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logfile.log
#layout
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#maxFileSize is 500kb
log4j.appender.R.MaxFileSize=500KB
#backup 1
log4j.appender.R.MaxBackupIndex=1
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%nlog4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
到tomcat 目录下。你也可以自己设
不应该用log.debug("log4j-debug执行doAccessCheck");
我错在这里了
private static final Log log = LogFactory.getLog(PersonServiceBean.class);
这是commons-logging的Log,不是log4j的
后来,下了个视频看了看,log4j很好很强大