一搬瑰、想法
項目中要記錄日志方便日后查詢歼疮,而springboot內(nèi)置了日志功能跨琳,由于度娘的強大哪痰,找到很多各種寫法的遂赠,于是便歸納了一下,方便使用晌杰。
二跷睦、SpringBoot依賴
創(chuàng)建SpringBoot項目的pom文件都會引用一個parent,進入parent會有日志的各種依賴肋演,這時就不用自己添加依賴 如下:
image.png
三抑诸、log4j具體配置
<?xml version="1.0" encoding="UTF-8"?><configuration>
<Properties>
<Property name="LOG_PATTERN">
"%highlight{[%-5p] %d %c - %m%n}{FATAL=red, ERROR=red, WARN=white, INFO=blue, DEBUG=yellow,TRACE=cyan}"
</Property>
<Property name="LOG_FILE_PATH">./logs</Property>
</Properties>
<appenders>
<!-- 控制臺輸出 -->
<Console name="CONSOLE" target="SYSTEM_OUT">
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout charset="UTF-8" pattern="${LOG_PATTERN}"/>
</Console>
<!-- fileName:輸出路徑 filePattern:命名規(guī)則 -->
<RollingFile name="runtimeFile" fileName="${LOG_FILE_PATH}/utsapi.log"
filePattern="${LOG_FILE_PATH}/utsapi-%d{yyyy-MM-dd}.%i.log">
<Filters>
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<!-- 輸出格式 -->
<PatternLayout charset="UTF-8" pattern="${LOG_PATTERN}"/>
<Policies>
<!-- SizeBasedTriggeringPolicy單個文件的大小限制 -->
<SizeBasedTriggeringPolicy size="100KB"/>
<!-- 每天創(chuàng)建一個日志文件 -->
<!-- <TimeBasedTriggeringPolicy interval="1" />-->
</Policies>
<!-- DefaultRolloverStrategy同一個文件下的最大文件數(shù) -->
<DefaultRolloverStrategy max="2">
<Delete basePath="${LOG_FILE_PATH}" maxDepth="2">
<IfFileName glob="*.log"/>
<!--age 保存天數(shù) 數(shù)字最好>2, 否則可能造成刪除的時候, 最近的文件還處于被占用狀態(tài),導致刪除不成功!-->
<IfLastModified age="3d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</appenders>
<loggers>
<!--過濾掉spring無用的debug信息-->
<!-- <logger name="org.springframework" level="error"></logger>-->
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="runtimeFile"/>
</root>
</loggers></configuration>
注意:
basePath 定義了掃描日志文件的根門路。
maxDepth 定義了遍歷的層級爹殊,1示意 bashPath 下的所有文件
IfFileName 定義了掃描的文件格式
IfLastModified 定義了只有在最初拜訪工夫在3天以上的才會被刪除
刪除操作只會產(chǎn)生在日志滾動時蜕乡,而滾動的機會取決于 filePattern 和 Triggering Policies (下面配置中 Policies 局部)
IfFileName 指定刪除的文件格式,只有符合條件都會被刪除梗夸,并沒有限度是通過以后服務輸入层玲。下面這樣配置是為了只刪除歷史日志文件。
IfFileName 和 IfLastModified 都屬于 pathConditions。pathConditions 是一個數(shù)組称簿,決定哪些文件會被刪除扣癣,如果定義了多個,須要多個條件同時滿足才會被刪除憨降。