添加了Lombok和logback依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
接下来,在您的Spring Boot应用程序中,您可以使用Lombok提供的@Slf4j
注解来自动生成日志记录变量,例如:
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
public class UserController {
@GetMapping("/user")
public String getUser() {
log.debug("Request to get user information.");
// your logic here
return "User";
}
}
在这个例子中,我们使用了@Slf4j
注解来自动生成一个log
变量,用于日志记录。然后,在getUser()
方法中,我们使用log.debug()
方法来记录一条调试级别的日志消息。
接下来,我们将配置logback来将日志记录持久化到文件中。在src/main/resources
目录下,创建一个名为logback.xml
的文件:
常见配置选项的完整logback.xml文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 日志文件输出 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/application.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/application.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- root日志配置 -->
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
<!-- com.example包日志配置 -->
<logger name="com.example" level="debug"/>
</configuration>
在此示例中,我们定义了两个附录器:CONSOLE
和FILE
。CONSOLE
附加程序将日志记录输出到控制台,而FILE
附加程序将日志记录输出到启动应用程序时指定的文件中。
我们还定义了两个不同的日志记录配置:root
和com.example
。root
配置将应用于所有日志记录,而com.example
配置将仅应用于名为com.example
的logger。
我们使用<rollingPolicy>
标记来指定日志文件滚动策略。在此示例中,我们使用TimeBasedRollingPolicy
,它根据时间来滚动日志文件。fileNamePattern
属性指定生成的日志文件的名称格式。在此示例中,我们使用了每天一个日志文件,并最多保留了7天的历史日志记录。
或者使用yml配置
logging: file: name: E:/log/logfile.log # 清理策略 cleanup: policy: time_based # 按天数清理 time_based: max_age: 7 level: root: info com.example.mypackage: debug pattern: console: "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
日志是用来帮助开发者在程序中定位问题和调试的工具,因此一般来说我们会在以下情况下打印日志:
-
在程序出现异常或错误时,用来记录错误信息和堆栈信息,方便定位和解决问题。
-
在程序执行过程中需要输出一些调试信息或运行状态信息时,用来帮助开发者了解程序的运行情况。
-
在程序中需要进行性能分析时,用来记录程序的执行时间和资源消耗情况,方便进行优化和改进。
以下是一个简单的打印日志的例子:
public class MyService {
private static final Logger LOGGER = LoggerFactory.getLogger(MyService.class);
public void doSomething() {
LOGGER.debug("Starting doSomething method.");
try {
// do some work
} catch (Exception e) {
LOGGER.error("An error occurred while doing something.", e);
}
LOGGER.debug("Finished doSomething method.");
}
}
在上面的例子中,我们使用了logback框架打印日志。在doSomething方法中,我们分别使用了debug和error级别打印日志,分别用来记录方法的开始和结束信息,以及方法执行过程中出现的异常信息。通过打印这些日志,我们可以更好地了解方法的执行情况,以及定位和解决问题。