步骤:
1.导入Log4j的jar包,及commons-loggiing.jar包
2.在resources目录下创建一个log4j.properties配置文件
#指定logger
# 配置Logger组件
# 设定Log4j的日志级别(error warn info debug):控制日志输出的内容
# 输出目的地(Console, logfile是appender的名字,是自己定义的,后面才赋予具体的含义)
log4j.rootLogger=info,logfile, Console
###################################################################################################################
#指定appender(目的地)
#设定Logger的Console(appender的名字)的Appender类型为控制台输出
#org.apache.log4j.ConsoleAppender 表明 Console是控制台输出
log4j.appender.Console=org.apache.log4j.ConsoleAppender
#输出的格式
#设定Console的Appender布局Layout
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式)包含选项:
# ConversionPattern=%m%n :指定怎样格式化指定的消息
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#2009-09-29 07:30:43,265 INFO com.itcast.web.controller.SearchCdServlet.doGet() - e
log4j.appender.Console.layout.ConversionPattern=%d %p %c.%M() - %m%n
###################################################################################################################
#设定Logger的logfile(appender的名字)的Appender类型为文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
#设定文件的输出路径(指定文件的名字和路径,tomcat的启动路径)
log4j.appender.logfile.File=E:\\IDEAbook\\Graduation.log
#设定后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logstrore.log.1文件
log4j.appender.logfile.MaxFileSize=2048KB
#Keep three backup files.指定可以产生的滚动文件的最大数
log4j.appender.logfile.MaxBackupIndex=4
#设定logfile的Appender布局Layout
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p %c.%M() - %m%n
###################################################################################################################
3.使用AOP面想切面编程,然后再使用Log4j记录信息
package com.bishe.Aspect;
import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
@Component
@Aspect
public class ControllerAspect {
private static final Logger logger = Logger.getLogger(ControllerAspect.class);
@Before(value = "execution(* com.bishe.*.controller..*(..))")
public void beforeLog(JoinPoint poit){
ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
String remoteHost = request.getRemoteHost();
String className = poit.getTarget().getClass().getName();
Signature signature = poit.getSignature();
logger.info("请求的类是:"+className+"目标方法的签名是:"+signature+"发送请求地址"+remoteHost);
System.out.println("请求的类是:"+className+"目标方法的签名是:"+signature+"发送请求地址"+remoteHost);
}
}
4.(很重要)在springmvc.xml文件中开启切面支持
<aop:aspectj-autoproxy/>

5.查看日志信息,存储日志的位置可以自行设置,在配置文件中设置