您的位置:首页 > 编程语言 > Java开发

SpringBoot之LogBack常用配置

2017-09-25 15:26 459 查看

前言

若我们使用的是Starters,则SpringBoot默认日志框架是logback,所以我们在SpringBoot中使用它还是比较简单的。

需求明确

需要一个总日志,记录系统、环境的信息

根据包名,分别在对应目录下输出日志

输出的日志要有必须的信息,方便调试

定时删除日志,日志限定大小

编写测试类

需求明确后,我这里编写两个测试类

Controller

@RestController
public class UserController {

private final static Logger logger = LoggerFactory.getLogger(UserController.class);

@Autowired
private UserService mUserService;

@GetMapping("/log")
public String logController() {
logger.info("controller");
return mUserService.logService();
}
}


Service

@Service
public class UserService {

private final static Logger logger = LoggerFactory.getLogger(UserService.class);

public String logService() {
logger.info("service");
return "hello logback";
}
}


Application

@RestController
@SpringBootApplication
public class ZsdkApplication {

private final static Logger logger = LoggerFactory.getLogger(ZsdkApplication.class);

@RequestMapping("/")
public String showIndex() {
logger.info("hello world for log");
return "hello world for log";
}

public static void main(String[] args) {
SpringApplication.run(ZsdkApplication.class, args);

}
}


在resources文件夹下放置logback的配置文件

注意:配置文件最好以logback-spring.xml命名,这也是SpringBoot推荐的,不然有可能日志初始化有问题

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="/logs" />
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%line:行号,%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} Line:%line ----------------> %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/system/SDKWeb-%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} Line:%line ----------------> %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>

<!-- show parameters for hibernate sql 专为 Hibernate 定制 -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder"  level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor"  level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />

<!--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"/>

<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>

<!--分包输出日志,分包配置-->
<appender name="serviceAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/service/SdkService-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} Line:%line ----------------> %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>

<appender name="controllerAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/controller/SdkController-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} Line:%line ----------------> %msg%n</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>

<!--分包输出日志,分包指向-->
<logger name="com.zsdk.service" level="INFO" additivity="false">
<appender-ref ref="serviceAppender" />
</logger>

<logger name="com.zsdk.controller" level="INFO" additivity="false">
<appender-ref ref="controllerAppender" />
</logger>

</configuration>


测试

访问http://localhost:8080http://localhost:8080/log

然后就会在对应目录生成文件夹和log



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring-boot logback