??日志記錄在整個java工程開發(fā)中占著很重要的比重,因為很多問題的排查需要通過日志分析才能確認。在SpringBoot中我用得最多的就是log4j這個日志框架。接下來我們具體配置log4j.
??log4j定義了8個級別的log(除去OFF和ALL,可以說分為6個級別),優(yōu)先級從高到低依次為:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL
logger.fatal("fatal"); // 嚴重錯誤,一般會造成系統(tǒng)崩潰和終止運行
logger.error("error"); // 錯誤信息,但不會影響系統(tǒng)運行
logger.warn("warn"); // 警告信息,可能會發(fā)生問題
logger.info("info"); // 程序運行信息,數(shù)據(jù)庫的連接、網(wǎng)絡(luò)、IO操作等
logger.debug("debug"); // 調(diào)試信息,一般在開發(fā)階段使用,記錄程序的變量、參數(shù)等
logger.trace("trace"); // 追蹤信息,記錄程序的所有流程信息
1.添加POM依賴
<!-- log4j的日志服務(wù) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
2.增加log4j.properties日志配置文件
在工程的resources文件夾,增加log4j.properties,具體配置文件如下:
### set log levels - for more verbose logging change 'info' to 'debug' ###
#展示log4j的各種配置
log4j.rootLogger=stdout,File
log4j.appender.logfile.encoding=UTF-8
#打印到控制臺的日志
### Console DEBUG
log4j.logger.stdout=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Append=true
log4j.appender.stdout.MaxFileSize=20MB
log4j.appender.stdout.MaxBackupIndex=10
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-[ %p ] %c - %m%n
#普通文件保存日志
### File
log4j.appender.File.Threshold = ERROR
log4j.appender.File = org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}:%p - %m%n
log4j.appender.File.File=E:/console.log
log4j.appender.File.DatePattern='.'yyyy-MM-dd
#自己定義的日志,這里我們是用作記錄用戶訪問的日志
#這里的日志是按天滾動,后綴名是年月日
###Access log
log4j.logger.accessInfo=INFO,R1
log4j.appender.R1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.R1.layout = org.apache.log4j.PatternLayout
log4j.appender.R1.Encoding=UTF-8
log4j.appender.R1.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}:%p %t %c - %m%n
log4j.appender.R1.File=E:/access.log
log4j.appender.R1.DatePattern='.'yyyy-MM-dd
#自己定義的日志,這里我們是用作記錄用戶閱讀的日志
#這里的日志是按天滾動,后綴名是年月日
#user read record log
log4j.logger.userRead=INFO,R2
log4j.appender.R2 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.R2.layout = org.apache.log4j.PatternLayout
log4j.appender.R2.Encoding=UTF-8
log4j.appender.R2.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}:%p %t %c - %m%n
log4j.appender.R2.File=E:/user_read.log
log4j.appender.R2.DatePattern='.'yyyy-MM-dd
#INFO
#關(guān)閉某些日志的輸出
log4j.logger.com.zaxxer.hikari=OFF
log4j.logger.org.apache.http.impl.conn.PoolingHttpClientConnectionManager=OFF
log4j.logger.org.thymeleaf.TemplateEngine.CONFIG=OFF
log4j.logger.org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener=OFF
log4j.logger.io.lettuce=OFF
這里總共輸出了4塊日志:
一個是stdout的標準控制臺輸出。
一個是普通文件保存日志基本是所有的日志都會輸出在這里,所以它的日志級別定義的非常高,定義成ERROR級別,這樣普通的DEBUG,INFO這樣的日志都不會輸出到這里,只有ERROR級別的才會輸出。
一個是accessInfo日志,這是用戶自定義的一個日志,用于記錄用戶的訪問日志
一個是userRead日志,這是用戶自定義的一個日志,用于記錄用戶的閱讀記錄日志
接下里在代碼里面,我們增加用戶自定義日志的使用技巧,我們定義一個接口常量,這樣用戶在記錄自己特有的日志信息時,就可以直接用常量接口來調(diào)用
package com.example.firstweb.util;
import org.apache.log4j.Logger;
public interface Constants {
public static final Logger LOG_ACCESS_INFO = Logger.getLogger("accessInfo");
public static final Logger LOG_USER_READ = Logger.getLogger("userRead");
}
然后我們在Controller里面使用這些接口常量來記錄日志文章來源:http://www.zghlxwxcb.cn/news/detail-679109.html
package com.example.firstweb.controller;
import com.example.firstweb.model.po.WelcomePo;
import com.example.firstweb.model.vo.WelcomeVo;
import com.example.firstweb.service.WelcomeService;
import com.example.firstweb.util.Constants;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.log4j.Logger;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@Api(value = "welcome controller", tags = "歡迎界面")
public class Welcome {
@Autowired
private WelcomeService welcomeService;
private static final Logger log = Logger.getLogger(Welcome.class);
@GetMapping("/welcomeindex")
@ApiOperation("歡迎首頁的方法1")
public ModelAndView welcomeIndex(){
ModelAndView view = new ModelAndView("welcomeindex");
WelcomePo wpo= welcomeService.getWelcomInfo();
WelcomeVo wvo= new WelcomeVo();
BeanUtils.copyProperties(wpo, wvo);
view.addObject("welcomedata", wvo);
//默認控制臺輸出日志
log.info("default log info ");
//輸出訪問日志
Constants.LOG_ACCESS_INFO.info("welcome index accesss");
//輸出用戶閱讀日志
Constants.LOG_USER_READ.info("first user access log ");
return view;
}
@GetMapping("/welcomeindex2")
@ApiOperation("歡迎首頁的方法2")
public void welcomeIndex2(@ApiParam("定制歡迎詞") String test){
}
}
然后啟動程序,用瀏覽器訪問http://localhost:8088/welcomeindex,然后我們在本地磁盤就可以看到三個日志文件,分別是access.log,console.log,user_read.log
源代碼可以在這里直接獲得鏈接: https://pan.baidu.com/s/161WLSttV-nz5Fbmpf6_VVw 提取碼: rgrf文章來源地址http://www.zghlxwxcb.cn/news/detail-679109.html
到了這里,關(guān)于SpringBoot初級開發(fā)--加入Log4j進行日志管理打印(6)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!