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で設定したファイル出力レベルは、レベルが足りないとファイルに出力されません.