<appender name="DubboInfo" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>./data/log/sim-kpi.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>./data/log/sim-kpi.%d{yyyy-MM-dd}.%i.log </fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>5MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%date [%thread] %-5level %logger{80} - %msg%n</Pattern> </layout> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>NEUTRAL</onMismatch> </filter> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender>
./data/log/sim-kpi.log 此路徑表示在項目根目錄路徑下生成日志文件
請看下面這段配置,這是無法工作的:
- <?xml version="1.0" encoding="UTF-8" ?>
- <configuration>
- <contextName>JTheque</contextName>
- <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>logs/jtheque.log</file>
- <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
- <FileNamePattern>logs/jtheque.%i.log.zip</FileNamePattern>
- <MinIndex>1</MinIndex>
- <MaxIndex>5</MaxIndex>
- </rollingPolicy>
- <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
- <MaxFileSize>5MB</MaxFileSize>
- </triggeringPolicy>
- <layout class="ch.qos.logback.classic.PatternLayout">
- <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
- </layout>
- </appender>
- <root level="DEBUG">
- <appender-ref ref="FILE"/>
- </root>
- </configuration>
使用該配置,不會生成任何日志文件,這可能是 LogBack 的 bug,解決的辦法就是使用絕對路徑,你可以用一些系統變量來代替,例如:
- ...
- <file>${user.dir}/logs/jtheque.log</file>
- <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
- <FileNamePattern>${user.dir}/logs/jtheque.%i.log.zip</FileNamePattern>
- <MinIndex>1</MinIndex>
- <MaxIndex>5</MaxIndex>
- </rollingPolicy>
- ...
現在就好了,希望對某些使用 LogBack 的人有幫助。
其實使用相對路徑是能產生日志文件的,只是這個相對路徑是相對與Eclipse(我是使用eclipse開發的,在eclipse啟動的),我發現日志全部跑到eclipse安裝目錄里面去了
不過看樣子,logback是不推薦使用相對路徑來記錄日志文件,個人覺得確實使用一些環境變量來引用絕對路徑要更好控制一點
tomcat下可以用:${catalina.base}/logs/your_log.log
一直使用相對路徑. 沒發現問題. 使用你這個配置也沒問題. 可能你用的版本比較老,用最新的時會有警告,
http://logback.qos.ch/codes.html#layoutInsteadOfEncoder
ps: logback在當打包時目錄不存在時不會自動創建的目錄, 需要做小小的修改才行.
1, 把日志發送到郵件中
2, 把日志保存到數據庫中(有異步么?)
官方文檔有: http://logback.qos.ch/manual/appenders.html
- 線上會有Rolling日志, 放到磁盤的某個特殊位置(tomcat/logs/)
- 本地Console即可
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <springProfile name="production"> <appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${catalina.base}/logs/sim-kpi.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- daily rollover --> <FileNamePattern>${catalina.base}/logs/sim-kpi.%d{yyyy-MM-dd}.%i.log </FileNamePattern> <!-- keep 30 days' worth of history --> <maxHistory>1</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>20KB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80}-%msg%n</Pattern> </layout> </appender> </springProfile> <springProfile name="embedded"> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> </springProfile> <springProfile name="production"> <root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="dailyRollingFileAppender" /> </root> </springProfile> </configuration>