說實話對日誌這東西一直只是太膚淺的懂,就會用logger.info和logger.error輸出,今天在寫LemonRobot專案的時候,決定把偵錯資訊也打出來,然後根據日誌等級控制讓上線的時候不顯示debug等級的日誌。
但是運行後發現,預設logger.debug產生的日誌也沒有輸出到控制台,經過一番研究,是由於logback的配置問題。
在sr/main/resources資料夾中新建logback.xml,然後複製下面的配置到檔案中:
logback.xml會被自動加載,如果名字不一樣,我們需要在application.yml或application.properties中設定:
#配置日志 logging: #此处存放日志的路径 path: config: classpath:config/logback-spring.xml #指定不同目录下的日志的级别 level: com.shimain.springboot.mapper: DEBUG
<?xml version="1.0" encoding="UTF-8" ?> <configuration scan="true" scanPeriod="3 seconds"> <!--设置日志输出为控制台--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%logger{32}] %msg%n</pattern> </encoder> </appender> <!--设置日志输出为文件--> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>logFile.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>logFile.%d{yyyy-MM-dd_HH-mm}.log.zip</FileNamePattern> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{HH:mm:ss,SSS} [%thread] %-5level %logger{32} - %msg%n</Pattern> </layout> </appender> <root> <level value="DEBUG"/> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </root> </configuration>
這段設定檔可以讓日誌同時輸出到控制台和本地文件,同時將日誌檔案打成zip壓縮包。
如果這個時候專案上線了,不需要debug日誌了,只需要修改root標籤下面的level等級為INFO即可。
Tomcat Native library could not be found using names [tcnative-1, libtcnative-1]
tomcat沒有找到JNI動態連結函式庫。 Apache Tomcat下方是有這個dll的,但是啟動時在Springboot中內嵌Tomcat下沒有找到。
這是因為Tomcat中的connector為了提高效能,採用了載入與作業系統綁定(非跨平台)的本地庫的方式,例如Windows系統中就是.dll動態連結庫。
上述異常中找不到的兩個.dll庫文件,預設會去Tomcat的bin目錄下去找,但是由於SpringBoot的Tomcat是嵌入式的,沒有這兩個.dll。
可以忽略這個報錯,因此SpringBoot把這個錯誤的日誌等級設定為debug。
如果有強迫症者,也可以如下解決:
#直接將tomcat下的tcnative-1.dll和libtcnative-1.dll放到C:\Windows\System32下,重新啟動專案即可。
以上是Springboot怎麼允許logger.debug輸出日誌的詳細內容。更多資訊請關注PHP中文網其他相關文章!