1、在resource目錄里新增log4j.properties
##
#log4j.rootLogger=CONSOLE,info,error,DEBUG
log4j.rootLogger=info,error,CONSOLE,DEBUG
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold =info
log4j.appender.info.append=true
#log4j.appender.info.File=/home/admin/pms-api-services/logs/info/api_services_info
log4j.appender.info.File=/Users/dddd/Documents/testspace/pms-api-services/logs/info/api_services_info
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold =error
log4j.appender.error.append=true
#log4j.appender.error.File=/home/admin/pms-api-services/logs/error/api_services_error
log4j.appender.error.File=/Users/dddd/Documents/testspace/pms-api-services/logs/error/api_services_error
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold =DEBUG
log4j.appender.DEBUG.append=true
#log4j.appender.DEBUG.File=/home/admin/pms-api-services/logs/debug/api_services_debug
log4j.appender.DEBUG.File=/Users/dddd/Documents/testspace/pms-api-services/logs/debug/api_services_debug
##
2爽锥、在pom里引入aop
3疑苫、創(chuàng)建切面類
其中Logger? 引入的是import org.slf4j.Logger;
HttpServletRequest引入的是import javax.servlet.http.HttpServletRequest;
##
package com.itmayidu.app;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
/**
* Created by Damon on 2018/6/26_9:45.
*
* @Descrption:
*/
@Component
@Aspect
public class WebLogAspect {
//引入log
? ? private Loggerlogger = LoggerFactory.getLogger(getClass());
//定義切點(diǎn)
? ? @Pointcut("execution(public * com.itmayidu.controller.IndexController.*(..))")
public void webLog(){}
//服務(wù)器處理請(qǐng)求之前操作日志
? ? @Before("webLog()")
public void doBefore(JoinPoint joinPoint) {
//接收到請(qǐng)求熏版,記錄請(qǐng)求內(nèi)容
? ? ? ? ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
//記錄請(qǐng)求全路徑
? ? ? ? logger.info("URL={}", request.getRequestURL());
//Get還是Post等
? ? ? ? logger.info("HTTP_METHOD={}", request.getMethod());
//請(qǐng)求地址
? ? ? ? logger.info("IP={}" ,request.getRemoteAddr());
//RemoteUser
? ? ? ? logger.info("RemoteUser={}", request.getRemoteUser());
//遠(yuǎn)程地址
? ? ? ? logger.info("RemoteHost={}",request.getRemoteHost());
//RemotePort
? ? ? ? logger.info("RemotePort={}",request.getRemotePort());
//請(qǐng)求中的參數(shù)
? ? ? ? logger.info("args={}",joinPoint.getArgs());
//拼出切面類和具體的方法
? ? ? ? logger.info("class_method={}" ,joinPoint.getSignature().getDeclaringTypeName() +"."+joinPoint.getSignature().getName());
//用枚舉列出參數(shù)集合,遍歷
? ? ? ? Enumeration enu = request.getParameterNames();
while(enu.hasMoreElements()){
String name = enu.nextElement();
logger.info("name={},value={}",name,request.getParameter(name));
}
}
//
? ? @After("webLog()")
public? void doAfter(){
logger.info("服務(wù)器全部完事了....");
}
//
? ? @AfterReturning(returning ="object" , pointcut ="webLog()")
public void doAfterReturning(Object object) {
logger.info("Response={}" ,object);
}
}
##
4捍掺、這樣訪問IndexController就會(huì)進(jìn)入到日志管理