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
经验分享 程序员 微信小程序 职场和发展