@(文章目錄) 提示:本文僅供學習交流,請勿用於非法活動! 前言 本文內容: 日誌搭建 一、依賴 <!-- Spring集成日誌包 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</arti ...
@
目錄提示:本文僅供學習交流,請勿用於非法活動!
前言
本文內容: 日誌搭建一、依賴
<!-- Spring集成日誌包 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
二、日誌文件
在resource -- profiles 文件下新建logback.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="project_name" value="com.demo" />
<contextName>${project_name}</contextName>
<property name="file_path" value="/logs/${project_name}"/>
<!-- 日誌輸出源,輸出日誌到文件,不滿足某個條件時將日誌輸出到另一個文件 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${file_path}/error.log</file>
<!-- 日誌記錄器的滾動策略,按日期,按大小記錄 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天日誌歸檔路徑以及格式 -->
<fileNamePattern>${file_path}/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日誌文件保留天數-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<!-- 日誌格式化器 -->
<encoder>
<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字元寬度%msg:日誌消息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!-- 此日誌文件只記錄info級別的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 時間滾動輸出 level為 INFO 日誌 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${file_path}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${file_path}/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字元寬度%msg:日誌消息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!-- 此日誌文件只記錄info級別的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 時間滾動輸出 level為 DEBUG 日誌 -->
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${file_path}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${file_path}/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字元寬度%msg:日誌消息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!-- 此日誌文件只記錄info級別的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 根日誌輸出器:級別TRACE、DEBUG、INFO、WARN、ERROR、ALL、OFF -->
<root level="ERROR">
<appender-ref ref="ERROR_FILE" />
</root>
<root level="INFO">
<appender-ref ref="INFO_FILE" />
</root>
<root level="DEBUG">
<appender-ref ref="DEBUG_FILE" />
</root>
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<logger name="com.cherry.shop" level="DEBUG"/>
</configuration>
三、代碼編寫
需要輸出日誌的類
@Controller
@RequestMapping("/jobSummary")
public class JobSummaryController {
// 為該類打上日誌
private final static Logger logger = LoggerFactory.getLogger(JobSummaryController.class);
@Autowired
private JobSummaryService jobSummaryService;
/**
* 修改工作總結
* @param params
* @param r
* @return
*/
@RequestMapping("/insertJobSummary")
@ResponseBody
public Result insertJobSummary(@Valid @RequestBody JobSummaryDto params, BindingResult r){
try{
// 參數檢測+
if(r.hasErrors()){
return Results.error();
}
if(!StringUtils.isBlank(params.getId())){
// 修改
JobSummary jobSummary = jobSummaryService.selectById(params.getId());
jobSummary.setJobContent(params.getJobContent());
jobSummaryService.updateById(jobSummary);
}
return Results.opOk();
} catch (Exception e) {
logger.error("修改工作總結失敗!params:"+params.toString(),e);
return Results.updateError();
}
}
}
四、日誌輸出
在定義的目錄下生成了三個日誌文件:
其中我修改了工作總結,日誌記錄在debug文件里:
2021-12-03 12:11:23.194 [http-nio-8080-exec-6] DEBUG o.s.w.s.m.m.a.RequestResponseBodyMethodProcessor - Written [Result [code=0, message=查詢成功!, success=true, data=[JobSummary(id=687ea022c3744e628c5bcd8727a80002,
jobContent=日常工作開展)]]] as "application/json" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@4ebbb7ef]
隨心所往,看見未來。Follow your heart,see night!
歡迎點贊、關註、留言,一起學習、交流!