@
目录
提示:本文仅供学习交流,请勿用于非法活动!
<font color="#999AAA"> <font color="#999AAA">一、依赖
-
- <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" >
- <file>${file_path}/error.log</file>
-
- <rollingPolicy >
-
- <fileNamePattern>${file_path}/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
- <timeBasedFileNamingAndTriggeringPolicy >
- <maxFileSize>100MB</maxFileSize>
- </timeBasedFileNamingAndTriggeringPolicy>
-
- <maxHistory>30</maxHistory>
- </rollingPolicy>
-
- <encoder>
-
- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
- </encoder>
-
- <filter >
- <level>ERROR</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
-
- <appender name="INFO_FILE" >
- <file>${file_path}/info.log</file>
- <rollingPolicy >
- <fileNamePattern>${file_path}/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
- <timeBasedFileNamingAndTriggeringPolicy >
- <maxFileSize>100MB</maxFileSize>
- </timeBasedFileNamingAndTriggeringPolicy>
- <maxHistory>30</maxHistory>
- </rollingPolicy>
- <encoder>
-
- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
- </encoder>
-
- <filter >
- <level>INFO</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
-
- <appender name="DEBUG_FILE" >
- <file>${file_path}/debug.log</file>
- <rollingPolicy >
- <fileNamePattern>${file_path}/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
- <timeBasedFileNamingAndTriggeringPolicy >
- <maxFileSize>100MB</maxFileSize>
- </timeBasedFileNamingAndTriggeringPolicy>
- <maxHistory>30</maxHistory>
- </rollingPolicy>
- <encoder>
-
- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
- </encoder>
-
- <filter >
- <level>DEBUG</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
-
- <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>
-
- <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]
复制代码 |