spring五种通知类型(五)

2014-11-24 09:21:59 · 作者: · 浏览: 12
ger=WARN,stdout,file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=D:\\error.log
log4j.appender.file.layout=org.apache.log4j.SimpleLayout
4) 新建ExceptionLogger
[java]
package tarena.aop;
import org.apache.log4j.Logger;
public class ExceptionLogger {
Logger logger = Logger.getLogger(ExceptionLogger.class);
public void loggerExcetpion(Exception ex){
//将ex异常信息写入文件中
logger.error(ex);
}
}
5) 修改aop.xml
[html]
expression="execution(* tarena.service.*.*(..))" />
aspect id="loggeraspect" ref="exceptionlogger">
pointcut-ref="servicepointcut"/>
6) UserServiceImpl
[java]
package tarena.service;
public class UserServiceImpl implements UserService {
public void delete() {
System.out.println("删除用户信息");
//模拟NullPointException
String s = null;
s.length();
}
public boolean save() {
System.out.println("保存用户信息");
return true;
}
public void update() {
System.out.println("更新用户信息");
}
}
7) Test
[java]
package tarena.service;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test1 {
private static final String CONFIG = "aop.xml";
/**
* @param args
*/
public static void main(String[] args) {
try {
ApplicationContext ac =
new ClassPathXmlApplicationContext(CONFIG);
UserService userService =
(UserService)ac.getBean("userservice");
userService.update();
userService.save();
userService.delete();
} catch (Exception e) {
}
}
}
8) 运行Test
9) 查看d:/error.log
记录了一条错误日志
我们可以对异常信息进行拼接,使用StringBuffer,这样显示更清晰
10) 修改ExceptionLogger
[java]
package tarena.aop;
import org.apache.log4j.Logger;
public class ExceptionLogger {
Logger logger = Logger.getLogger(ExceptionLogger.class);
public void loggerExcetpion(Exception ex){
// 将ex异常信息写入文件中
StringBuffer sb = new StringBuffer();
sb.append("========================\n");
StackTraceElement[] element = ex.getStackTrace();
for(StackTraceElement e:element){
sb.append(e+"\n");
}
logger.error(sb.toString());
}
}
11) 运行Test
12) 查看d:/error.log
在我们写程序的时候,如果使用框架技术(比如struts2和hibernate),这些框架技术也使用log4j
记录日志。
如果我们这样写,框架底层的一些错误也会被记录下来。
13) 修改log4j.properties
[java]
log4j.rootLogger=WARN,stdout,file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=D:\\error.log
log4j.appender.file.layout=org.apache.log4j.SimpleLayout
但是,我们关心的更多的是我们自定义的方法发生异常,所以我们一般这样写
14) 修改log4j.properties
[java]
#default use Logger
log4j.rootLogger=INFO,std