1. 程式人生 > >springboot +aop+log4j日誌管理

springboot +aop+log4j日誌管理

做好日誌管理會給後續專案上線維護帶來很大的方便:

springboot專案開始建立:

1,引入依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>
4.0.0</modelVersion> <groupId>com.gaozhuan</groupId> <artifactId>springboot-log-timer</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding
>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.11</version> </dependency> </dependencies> </project>

2.編寫啟動類:

package com.gaozhuan;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
//@EnableScheduling//定時任務
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}
application.yml:
server:
  context-path: /log-timer
  port: 8888

3,利用aop記錄日誌:

引入依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

編寫aop類:

package com.gaozhuan.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
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.Arrays;

@Component
@Aspect
public class AopController {
    private org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(AopController.class);
    // private Logger logger = Logger.getLogger(AopController.class.getName());
@Pointcut("execution(public * com.gaozhuan.controller..*.*(..))")
    public void webLog() {
    }

    @Before("webLog()")
    public void doBefore(JoinPoint joinPoint) throws Throwable {
        // 接收到請求,記錄請求內容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();

        // 記錄下請求內容
logger.info("URL : " + request.getRequestURL().toString());
        logger.info("HTTP_METHOD : " + request.getMethod());
        logger.info("IP : " + request.getRemoteAddr());
        logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
        logger.info("ARGS : " + Arrays.toString(joinPoint.getArgs()));

    }

    @AfterReturning(returning = "ret", pointcut = "webLog()")
    public void doAfterReturning(Object ret) throws Throwable {
        // 處理完請求,返回內容
logger.info("RESPONSE : " + ret);
    }

}

4,利用log4j記錄日誌:

引入log4j.properties:

log4j.rootLogger=debug,CONSOLE,file,info
#log4j.rootLogger=ERROR,ROLLING_FILE
log4j.logger.cn.smbms=debug
log4j.logger.org.apache.ibatis=debug
log4j.logger.org.mybatis.spring=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=debug
######################################################################################
# Console Appender  \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e
######################################################################################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=debug
log4j.appender.CONSOLE.DatePattern=yyyy-MM-dd
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= - (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
######################################################################################
# Rolling File  \u6587\u4ef6\u5927\u5c0f\u5230\u8fbe\u6307\u5b9a\u5c3a\u5bf8\u7684\u65f6\u5019\u4ea7\u751f\u4e00\u4e2a\u65b0\u7684\u6587\u4ef6
######################################################################################
#log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
#log4j.appender.ROLLING_FILE.Threshold=INFO
#log4j.appender.ROLLING_FILE.File=${baojia.root}/logs/log.log
#log4j.appender.ROLLING_FILE.Append=true
#log4j.appender.ROLLING_FILE.MaxFileSize=5000KB
#log4j.appender.ROLLING_FILE.MaxBackupIndex=100
#log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.ROLLING_FILE.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
######################################################################################
# DailyRolling File  \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11
######################################################################################
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=${AppInfoSystem.root}/logs/log.log
#log4j.appender.file.File=logs/log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=debug
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern= - (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
#DWR \u65e5\u5fd7
#log4j.logger.org.directwebremoting = ERROR
#\u663e\u793aHibernate\u5360\u4f4d\u7b26\u7ed1\u5b9a\u503c\u53ca\u8fd4\u56de\u503c
#log4j.logger.org.hibernate.type=DEBUG,CONSOLE
#log4j.logger.org.springframework.transaction=DEBUG
#log4j.logger.org.hibernate=DEBUG
#log4j.logger.org.acegisecurity=DEBUG
#log4j.logger.org.apache.myfaces=TRACE
#log4j.logger.org.quartz=DEBUG
#log4j.logger.com.opensymphony=INFO
#log4j.logger.org.apache.struts2=DEBUG
log4j.logger.com.opensymphony.xwork2=debug
引入依賴:
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.11</version>
</dependency>

更改之前的 spring-boot-start-web 依賴為:防止日誌jar衝突

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
    <exclusion>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
</exclusions>
</dependency>

建立一個controller類:

package com.gaozhuan.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LogController {
    @RequestMapping(value = "/index")
    public String index(){
        return "hello logger!";
    }
}
啟動應用程式:

找到log4j:配置檔案中的log日誌位置:

開啟對應的log日誌:


相關推薦

springboot +aop+log4j日誌管理

做好日誌管理會給後續專案上線維護帶來很大的方便:springboot專案開始建立:1,引入依賴:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/PO

springboot AOP 實現日誌管理

本文使用註解進行spring AOP的實現。 1.AOP的基本概念 (1)Aspect(切面):通常是一個類,裡面可以定義切入點和通知 (2)JointPoint(連線點):程式執行過程中明確的點,一般是方法的呼叫 (3)Advice(通知):AOP在特定的切入點上執

SpringBoot全局日誌管理AOP

clas spec before 接收 方法測試 start cut asp hold 1、在pom.xml中引入aop的jar包 <dependency> <groupId>org.springframework.boot</gro

兩種基於AOP日誌管理方法(springboot)

AOP基於切面程式設計,這裡的日誌管理倆種分別是 不需要配置xml檔案 1、切面類不做實際操作,切入點針對所有的controller類,各個需要儲存日誌的操作方法,分別執行日誌儲存的方法,更具有針對性。 2、通過自定義註解,針對方法級別,各個需要儲存日誌的

springboot整合log4j日誌記錄

1、在src/main/resources下面新建一個名為log4j.properties的檔案: ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j

commons-logging和Log4j 日誌管理/log4j.properties配置詳解

commons-logging和Log4j 日誌管理 (zz) 什麼要用日誌(Log)? 這個……就不必說了吧。 為什麼不用System.out.println()? 功能太弱;不易於控制。如果暫時不想輸出了怎麼辦?如果想輸出到檔案怎麼辦?如果想部分輸出怎麼辦?…… 為什麼

Springboot AOP處理日誌資訊錄入

現在凡是企業級的或者稍微大點專案,基本都需要日誌管理. 我這邊在springboot基礎上做了個日誌資訊記錄到資料庫的功能,在這裡備份一下,以後有需要就省的再重寫了. 首先我們得準備好所需要的jar,當然了這裡是pom.xml:

springboot預設的日誌管理工具logback的配置

1.首先建立xxx-spring.xml(必須是以spring結尾)2.logback-spring.xml的內容編輯<?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn">

SpringBoot之——log4j日誌配置案例

在建立Spring Boot工程時,我們引入了spring-boot-starter,其中包含了spring-boot-starter-logging,該依賴內容就是Spring Boot預設的日誌框架Logback,所以我們在引入log4j之前,需要先排除該包的依賴,再引入

JAVA學習筆記_利用slf4j進行log4j日誌管理

slf4j介紹 slf4j官網:http://www.slf4j.org/ SLF4J,即簡單日誌門面(Simple Logging Facade for Java),不是具體的日誌解決方案,它只服務於各種各樣的日誌系統。SLF4J所提供的核心API是一些

Spring整合log4j日誌管理

在使用Spring框架的時候,我們可以很方便的配置log4j來進行日誌管理。 進行配置之前,首先得下載jar包(log4j-1.2.11.jar) 配置如下: 1.在web.xml中最上面加入如下配置程式碼: [html] view plaincopyprint?

Spring的AOP實現日誌管理操作

關於這個aop,有時候面試官會經常問道這類的問題,比如說,你使用aop來實現日誌管理,那麼你的aop實現的時候,怎麼來獲取到你要的引數,如何還有你現在執行的操作命令? 今天就對這個問題進行測試解答。 文章宣告:此文章僅供測試,如有功能不全請諒解。 讀者最好對通知類,切入

SpringBoot-整合log4j日誌記錄

inf reel elements resp let home space ont contex 新建log4j配置文件 文件名稱log4j.properties #log4j.rootLogger=CONSOLE,info,error,DEBUG l

springboot日誌管理+集成log4j

簡單 info spring eve 日誌管理 exc group release 輸出結果 sprongboot使用的默認日誌框架是Logback。 可以在application.properties配置簡單日誌屬性,也可以單獨配置logback.xml格式,還可以使用

SpringBoot全域性日誌管理AOP

1、在pom.xml中引入aop的jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</

SpringBoot學習篇》(5)AOP+自定義註解實現日誌管理

用到的AOP註解:@Aspect  @Pointcut  @After 首先看一下如何呼叫自定義註解: @MyLog(module="老師模組", method="查詢全部") @RequestMapping("/all") public List

springBoot logback日誌配置管理 aop切面日誌模組管理,單獨輸出日誌檔案

1.springBoot 日誌配置(將controller包下的日誌單獨輸出到一個檔案下)  1   我們遵守約定>配置>編碼的原則,如果使用logback進行日誌管理,先新增pom 檔案但是spring-boot-starter其中包含了 spring-bo

SpringBoot中使用log4j日誌

網址 默認 cat sources pan 目錄 space com 控制臺   一:引入jar包   使用SpringBoot創建項目的時候,pom文件引入了spring-boot-starter,其中包含了spring-boot-starter-logging,該依賴內

aop日誌管理(摘)

scrip clas 切面 getclass desc urn data etc int <bean id="logAopBean" class="com.demo.common.aop.LogAop"></bean> <aop:co

log4j+slf4j管理日誌項目遷移logback+slf4j

art 位置 更改 args nes fault nal 模板 property 作為一個剛踏入java語言的小學生,最近被安排了一個任務,原有的項目中使用的是log4j日誌管理 要轉換成logbacak的日誌管理。介於之前並未深究log4j和logback日誌,所以做起來