Springboot配置保存日志文件
點(diǎn)擊上方“碼農(nóng)突圍”,馬上關(guān)注
這里是碼農(nóng)充電第一站,回復(fù)“666”,獲取一份專屬大禮包 真愛,請(qǐng)?jiān)O(shè)置“星標(biāo)”或點(diǎn)個(gè)“在看
來源:blog.csdn.net/gaopinqiang/
article/details/109228641
springboot日志配置:
springboot默認(rèn)日志是打印再console中的,不會(huì)保存在文件中。我們項(xiàng)目上線肯定要保存日志用于分析的。
一、使用xml配置日志保存(并不需要pom配置slf4j依賴,starter里面已經(jīng)配置了依賴了)
1、在項(xiàng)目的resources目錄下創(chuàng)建一個(gè)【logback-spring.xml】日志配置文件
名稱只要是一 logback開頭就行,測(cè)試使用log.xml并不會(huì)生成日志。合法名稱:logback.xml 、logback-spring.xml
備注:要配置logback-spring.xml,springboot會(huì)默認(rèn)加載此文件,為什么不配置logback.xml,因?yàn)?code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;">logback.xml會(huì)先application.properties加載,而logback-spring.xml會(huì)后于application.properties加載,這樣我們?cè)?code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;color: rgb(30, 107, 184);background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;">application.properties文中設(shè)置日志文件名稱和文件路徑才能生效
2、編寫xml文件內(nèi)容:
<configuration??scan="true"?scanPeriod="60?seconds"?debug="false">
?<contextName>logbackcontextName>
?
?<appender?name="console"?class="ch.qos.logback.core.ConsoleAppender">
??<encoder>
???
???<pattern>%d{yyyy-MM-dd?HH:mm:ss.SSS}?[%thread]?%-5level?%logger?-?%msg%npattern>
??encoder>
?appender>
?
?<appender?name="logFile"??class="ch.qos.logback.core.rolling.RollingFileAppender">
????<Prudent>truePrudent>?
????<rollingPolicy?class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
??????<FileNamePattern>
?????poslog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
??????FileNamePattern>
??????<maxHistory>7maxHistory>?
????rollingPolicy>
????<layout?class="ch.qos.logback.classic.PatternLayout">
??????<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>
上述配置的編碼中,對(duì)應(yīng)符號(hào)的含義如下
%d{HH:mm:ss.SSS}——日志輸出時(shí)間%thread——輸出日志的進(jìn)程名字,這在Web應(yīng)用以及異步任務(wù)處理中很有用%-5level——日志級(jí)別,并且使用5個(gè)字符靠左對(duì)齊%logger——日志輸出者的名字%msg——日志消息%n——平臺(tái)的換行符
3、編寫打印日志
?private?Logger?logger?=?LoggerFactory.getLogger(TestController.class);
?
?logger.info("name?=?"?+?name?+?"?||?views?=?"?+?views);//?使用
4、啟動(dòng)測(cè)試
在當(dāng)前文件夾下會(huì)創(chuàng)建一個(gè)【poslog/2020-10/22】的文件夾,里面會(huì)按天生成日志:【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)
備注:發(fā)現(xiàn)使用這個(gè)默認(rèn)不用配置pom依賴,最新的spring-boot-starter-web中已經(jīng)集成了。
總結(jié):啟動(dòng)一個(gè)項(xiàng)目,直接將logback-spring.xml文件復(fù)制到resources目錄下就可以實(shí)現(xiàn)日志文件記錄。非常方便。
二、進(jìn)階配置:
分類logback.xml配置:
日志配置到d盤了
<configuration>
?
?<property?name="log.path"?value="d:/logback"?/>
?
?<property?name="log.pattern"?value="%d{HH:mm:ss.SSS}?[%thread]?%-5level?%logger{20}?-?[%method,%line]?-?%msg%n"?/>
?
?<appender?name="console"?class="ch.qos.logback.core.ConsoleAppender">
??<encoder>
???<pattern>${log.pattern}pattern>
??encoder>
?appender>
?
?
?<appender?name="file_info"?class="ch.qos.logback.core.rolling.RollingFileAppender">
??<file>${log.path}/sys-info.logfile>
??
??<rollingPolicy?class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
???
???<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.logfileNamePattern>
???
???<maxHistory>60maxHistory>
??rollingPolicy>
??<encoder>
???<pattern>${log.pattern}pattern>
??encoder>
??<filter?class="ch.qos.logback.classic.filter.LevelFilter">
???
???
???<onMatch>ACCEPTonMatch>
???
???<onMismatch>DENYonMismatch>
??filter>
?appender>
?
?<appender?name="file_error"?class="ch.qos.logback.core.rolling.RollingFileAppender">
??<file>${log.path}/sys-error.logfile>
??
??<rollingPolicy?class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
???
???<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.logfileNamePattern>
???
???<maxHistory>60maxHistory>
??rollingPolicy>
??<encoder>
???<pattern>${log.pattern}pattern>
??encoder>
??<filter?class="ch.qos.logback.classic.filter.LevelFilter">
???
???<level>ERRORlevel>
???
???<onMatch>ACCEPTonMatch>
???
???<onMismatch>DENYonMismatch>
??filter>
?appender>
?
?
?<appender?name="sys-user"?class="ch.qos.logback.core.rolling.RollingFileAppender">
??<file>${log.path}/sys-user.logfile>
??<rollingPolicy?class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
???
???<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.logfileNamePattern>
???
???<maxHistory>60maxHistory>
??rollingPolicy>
??<encoder>
???<pattern>${log.pattern}pattern>
??encoder>
?appender>
?
?
?<logger?name="com.example"?level="debug"?/>
?
?<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以上日志才會(huì)輸出
如果配置 com.example: debug ,那么我們項(xiàng)目com.example包里面debug以上的日志也會(huì)輸出。
-?END - 最近熱文
? ?程序員之天梯排行榜,你在哪一級(jí)? ? ?提高千倍效率的 Java 代碼小技巧 ? ?武大94年博士年薪201萬入職華為天才計(jì)劃!學(xué)霸日程表曝光!太牛逼了! ? ?22年前被嘲養(yǎng)豬的北大學(xué)子,如今怎么樣了? ? ?清華計(jì)算機(jī)系上熱搜!近9成優(yōu)秀畢業(yè)生放棄留學(xué),前50名41人留校深造

