springboot日志配置:
springboot默認日志是列印再console中的,不會保存在檔案中,我們專案上線肯定要保存日志用于分析的,
一、使用xml配置日志保存(并不需要pom配置slf4j依賴,starter里面已經配置了依賴了)
1、在專案的resources目錄下創建一個【logback-spring.xml】日志組態檔
名稱只要是一 logback開頭就行,測驗使用log.xml并不會生成日志,合法名稱:logback.xml 、logback-spring.xml
備注:要配置logback-spring.xml,springboot會默認加載此檔案,為什么不配置logback.xml,因為logback.xml會先application.properties加載,而logback-spring.xml會后于application.properties加載,這樣我們在application.properties文中設定日志檔案名稱和檔案路徑才能生效,
Spring Boot 基礎就不介紹了,推薦看這個免費教程:
https://github.com/javastacks/spring-boot-best-practice
2、撰寫xml檔案內容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>logback</contextName>
<!--輸出到控制臺-->
<appender name="console" >
<encoder>
<!--<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %-30.30C{1.} : %m%n</pattern>-->
</encoder>
</appender>
<!--按天生成日志-->
<appender name="logFile" >
<Prudent>true</Prudent>
<rollingPolicy >
<FileNamePattern>
poslog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
</FileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<layout >
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
</Pattern>
</layout>
</appender>
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="logFile" />
</root>
</configuration>
上述配置的編碼中,對應符號的含義如下
%d{HH:mm:ss.SSS}——日志輸出時間%thread——輸出日志的行程名字,這在Web應用以及異步任務處理中很有用%-5level——日志級別,并且使用5個字符靠左對齊%logger——日志輸出者的名字%msg——日志訊息%n——平臺的換行符
3、撰寫列印日志
private Logger logger = LoggerFactory.getLogger(TestController.class);
logger.info("name = " + name + " || views = " + views);// 使用
4、啟動測驗
在當前檔案夾下會創建一個【poslog/2020-10/22】的檔案夾,里面會按天生成日志:【2020-10-22.log】,例如:
2020-10-22 16:38 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8088 (http)
2020-10-22 16:38 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8088"]
2020-10-22 16:38 [main] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat]
2020-10-22 16:38 [main] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.38]
2020-10-22 16:38 [main] INFO org.apache.catalina.core.AprLifecycleListener - Loaded Apache Tomcat Native library [1.2.23] using APR version [1.7.0].
2020-10-22 16:38 [main] INFO org.apache.catalina.core.AprLifecycleListener - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2020-10-22 16:38 [main] INFO org.apache.catalina.core.AprLifecycleListener - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2020-10-22 16:38 [main] INFO org.apache.catalina.core.AprLifecycleListener - OpenSSL successfully initialized [OpenSSL 1.1.1c 28 May 2019]
2020-10-22 16:38 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
2020-10-22 16:38 [main] INFO org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1422 ms
2020-10-22 16:38 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
2020-10-22 16:38 [main] INFO org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8088"]
2020-10-22 16:38 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer - Tomcat started on port(s): 8088 (http) with context path ''
2020-10-22 16:38 [main] INFO com.example.demo.DockerComposeTestApplication - Started DockerComposeTestApplication in 2.841 seconds (JVM running for 3.257)
備注:發現使用這個默認不用配置pom依賴,最新的spring-boot-starter-web中已經集成了,
總結:啟動一個專案,直接將logback-spring.xml檔案復制到resources目錄下就可以實作日志檔案記錄,非常方便,
二、進階配置:
Spring Boot 基礎就不介紹了,推薦看這個免費教程:
https://github.com/javastacks/spring-boot-best-practice
分類logback.xml配置:
日志配置到d盤了
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路徑 -->
<property name="log.path" value="d:/logback" />
<!-- 日志輸出格式 -->
<property name="log.pattern" value="https://www.cnblogs.com/javastack/p/%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<!-- 控制臺輸出 -->
<appender name="console" >
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系統日志輸出 -->
<appender name="file_info" >
<file>${log.path}/sys-info.log</file>
<!-- 回圈政策:基于時間創建日志檔案 -->
<rollingPolicy >
<!-- 日志檔案名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的歷史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter >
<!-- 過濾的級別 只會列印debug不會有info日志-->
<!-- <level>DEBUG</level>-->
<!-- 匹配時的操作:接收(記錄) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配時的操作:拒絕(不記錄) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" >
<file>${log.path}/sys-error.log</file>
<!-- 回圈政策:基于時間創建日志檔案 -->
<rollingPolicy >
<!-- 日志檔案名格式 -->
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的歷史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter >
<!-- 過濾的級別 -->
<level>ERROR</level>
<!-- 匹配時的操作:接收(記錄) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配時的操作:拒絕(不記錄) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 用戶訪問日志輸出 -->
<appender name="sys-user" >
<file>${log.path}/sys-user.log</file>
<rollingPolicy >
<!-- 按天回滾 daily -->
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的歷史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系統模塊日志級別控制 -->
<logger name="com.example" level="debug" />
<!-- Spring日志級別控制 -->
<logger name="org.springframework" level="warn" />
<root level="info">
<appender-ref ref="console" />
</root>
<!--系統操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>
<!--系統用戶操作日志-->
<logger name="sys-user" level="info">
<appender-ref ref="sys-user"/>
</logger>
</configuration>
還可以在application.yml中配置
# 日志配置
logging:
level:
com.example: info
org.springframework: warn
配置info就只有info以上日志才會輸出
如果配置 com.example: debug ,那么我們專案com.example包里面debug以上的日志也會輸出,
來源:blog.csdn.net/gaopinqiang/article/details/109228641
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2022最新版)
2.勁爆!Java 協程要來了,,,
3.Spring Boot 2.x 教程,太全了!
4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優雅的方式!!
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/518694.html
標籤:Java
