Springboot整合slf4j打印日志
整理不易,不喜勿喷。谢谢
. . . . . . . . . . . . . . .
1.依赖
//pom.xml里有这个包就可以,已经包含了下面的包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> //如果项目中没有上面的包,就引入下面的, <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency>
2.项目配置
1.直接设定 logging.file.path=logs logging.level.root=info logging.logback.rollingpolicy.max-file-size=10MB logging.logback.rollingpolicy.max-history=20
2.使用配置文件 logging.level.root=info logging.config=classpath:logback-spring.xml
3.slf4j配置
在resources下,新建logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration scan="true">
<!-- 定义日志存储的路径,不要配置相对路径 -->
<property name="FILE_PATH" value="D:/log/spring-log.%d{yyyy-MM-dd}.%i.log" />
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
<fileNamePattern>${
FILE_PATH}</fileNamePattern>
<!--只保留最近20天的日志-->
<maxHistory>20</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 日志文件的最大大小 -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
<!--<totalSizeCap>1GB</totalSizeCap>-->
</rollingPolicy>
<!--日志输出编码格式化-->
<encoder>
<charset>utf-8</charset>
<Pattern>%d{
HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{
36} - %msg%n</Pattern>
</encoder>
</appender>
</configuration>
4.使用
@RestController
@RequestMapping(value = "/data-pipeline")
public class ExcelController {
@Autowired
private FileService fileService;
private static final Logger logger = LoggerFactory.getLogger(ExcelController.class);
@RequestMapping(value = "exeBatMetapedia")
public void executeBatMetapedia() {
try {
Runtime mt = Runtime.getRuntime();
String cmd = "rundll32 SHELL32.DLL,ShellExec_RunDLL "+"E:\ImportMetapediaCMD\noUAC.CreateMetapedia.lnk";
Process pro = mt.exec(cmd);
pro.waitFor();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
logger.info("execute MetapediaUtility to insert/update term over");
}
5.异常
1.打包部署后,并没有打印log
1.首先检查包的同级目录是否有文件夹logs 2.logs文件夹的权限问题(注意:要可写入)
2.将jar包部署到服务器,用bat脚本启动,好像日志功能就丢失了 这个才是重点,我自己都记了笔记,还是再次入坑。日了狗了。
//只能换个思路了,在jar包的同级目录,建一个文件夹logs java -jar common.jar > E:commonlogsspring.log
3.如果启动bat,不显示黑窗口
//只能换个思路了,在jar包的同级目录,建一个文件夹logs start javaw -jar common.jar > E:commonlogsspring.log
