SpringBoot集積Log 4 j、集積AOP
9244 ワード
集積ログ4 j
(1)pom.xmlに依存を追加する
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-loggingartifactId>
exclusion>
exclusions>
dependency>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
Springbootのデフォルトでは、持参したログを使用します.持参したspring-boot-starter-loggingを削除する必要があります.私たちが導入したlog 4 jが機能します.
(2)resourcesの下にlog 4 j.propertiesを新規作成する
# Global logging configuration
log4j.rootLogger=DEBUG, stdout,D
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.Threshold = DEBUG
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
# File output...
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
# , tomcat 。
#log4j.appender.D.File = ../logs/error.log
log4j.appender.D.File = D:/logs/error.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
log4j.appender.D.encoding=UTF-8
Springboot公式推奨ログ構成のファイル名は-springで終わり、log 4 j-spring.propertiesです.もちろん、log 4 j.propertiesを使ってもいいです.
これでlog 4 jが統合され、springbootは自動的にlog 4 jを使用してログを管理します.
ログを手動で出力できます.
Logger logger = Logger.getLogger(UserController.class); // class
logger.debug("This is debug message.");
logger.error("This is error message.");
Loggerは一般的にメンバー変数の形式で書かれており、このようなすべての方法で使用するのに便利です.
private Logger logger = Logger.getLogger(UserController.class);
注意インポートされたLoggerは次のとおりです.
import org.apache.log4j.Logger;
誤解しないでください.
各リクエストのリクエストパラメータ、ipなどのログを統一的に記録し、各コントローラにLoggerを書く必要がある場合は、AOPを使用して各リクエストをブロックする必要があります.
統合AOP
(1)pom.xmlに依存を導入する
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-aopartifactId>
dependency>
(2)新規パッケージcom.chy.aspect,パッケージ下新規接面RequestLogAspect
@Aspect
@Component
public class RequestLogAspect {
//Logger
private Logger logger=Logger.getLogger(RequestLogAspect.class);
// , controller
@Pointcut("execution(public * com.chy.controller.*.*(..)))")
public void allController(){};
// ,()
@Before("allController()")
public void requestLog(){
// request
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// 、 、ip
logger.info("url:"+request.getRequestURI());
logger.info("http_method:"+request.getMethod());
logger.info("ip:"+request.getRemoteAddr());
//
Enumeration paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()){
String paramName = paramNames.nextElement();
String paramVal = request.getParameter(paramName);
logger.info(paramName+":"+paramVal);
}
}
}
注意呼び出したloggerのメソッド、log 4 j.propertiesで設定したファイル出力レベルは、レベルが足りないとファイルに出力されません.