Logback log framework usage

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:
  1. name attribute: the name of the recorder
  2. level attribute (optional): the level of the logger, the allowed levels are from low to high, TRACE < DEBUG < INFO < WARN < ERROR
  3. 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
  1. Console Appender: ch.qos.logback.core.ConsoleAppender
  2. File appender: ch.qos.logback.core.FileAppender
  3. 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>