Table of Contents
Log framework usage
Import dependencies (only need to import the following dependencies under the maven framework)
Configure logger
Logger has three properties:
Define a test method in the controller
Operation of saving logs in a file
Appender
Commonly used appenders
There are two types of rolling strategies:
Log framework usage
Import dependencies (only the following dependencies need to be introduced under the maven framework)
<!--Introduce dependencies of logback-classic--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> </dependency>
Configure logger
The log name must be logback.xml
Logger has three attributes:
- name attribute: the name of the recorder
- level attribute (optional): the level of the logger, the allowed levels are from low to high, TRACE < DEBUG < INFO < WARN < ERROR
- additivity attribute (optional): whether to allow superimposed log printing, true or false
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- Define appenders --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>?te %msg%n</pattern> </encoder> </appender> <!-- Root logger --> <root level="debug"> <appender-ref ref="STDOUT" /> </root> <!-- controller recorder --> <logger name="controller" level="info" additivity="false"> <appender-ref ref="STDOUT" /> </logger> <!-- controller.TestController recorder --> <logger name="controller.TestController" level="error" additivity="false"> <appender-ref ref="STDOUT" /> </logger> </configuration>
Define a test method in the controller
@Controller public class TestController { // Get the logger private Logger logger=LoggerFactory.getLogger(TestController.class); // private Logger logger=LoggerFactory.getLogger("controller3");//If there is no logger, get the parent class level @RequestMapping("/test") @ResponseBody public String test(){ // Get the record log, logger.trace("This is trace level log information"); logger.debug("This is debug level log information"); logger.info("This is info level log information"); logger.warn("This is a warning level log information"); logger.error("This is error level log information"); return "test"; } }
When the above is running, the corresponding information will be output in the console.
Note: The logger will record log information at the specified level and above.
The operation of saving the log in the file
Appender
Different appenders will log
Output to different places
, such as console appender, file appender, network appender, etc.
Commonly used appenders
- Console Appender: ch.qos.logback.core.ConsoleAppender
- File appender: ch.qos.logback.core.FileAppender
- Rolling file appender: ch.qos.logback.core.rolling.RollingFileAppender
<!-- File appender --> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>D:/ssm/myLog.log</file> <encoder> <pattern>?te %level %class %line %msg%n</pattern> </encoder> <append>true</append> </appender>
However, the recorded logs will be placed in the same file, which will be modified next to address this issue.
There are two scrolling strategies:
1.
based on
Time
rolling strategy
ch.qos.logback.core.rolling.TimeBasedRollingPolicy
2.
based on
Size and time
rolling strategy
ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy
<!-- Rolling file appender --> <appender name="ROLLINGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>E:/ssm1/log_current.log</file> <encoder> <pattern>?te %level %class %line %msg%n</pattern> </encoder> <!-- Based on time--> <!-- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">--> <!-- <fileNamePattern>E:/ssm1/log_%d{yyyy-MM-dd}.log</fileNamePattern>--> <!-- <maxHistory>30</maxHistory>--> <!-- </rollingPolicy>--> <!-- Based on size and time--> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>D:/ssm/log_%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxHistory>30</maxHistory> <totalSizeCap>5GB</totalSizeCap> <maxFileSize>1KB</maxFileSize> </rollingPolicy> </appender>