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