在開發中打印內容,使用 System.out.println() 和 Log4j 應當是人人皆知的方法了。
其實在開發中咱們不建議使用 System.out 由於大量的使用 System.out 會增長資源的消耗。
而Log4j 更爲靈活在性能上也相比 System.out 要高,咱們能夠配置輸出級別,能夠指定多個日誌文件分別記錄不一樣的日誌。
使用 System.out 是在當前線程執行的,寫入文件也是寫入完畢後才繼續執行下面的程序。而使用Log工具不但能夠控制日誌是否輸出,怎麼輸出,它的處理機制也是通知寫日誌,繼續執行後面的代碼沒必要等日誌寫完。
如非必要,建議你們不要使用控制檯輸出,由於控制檯輸出沒有優先級會顯得輸出太亂。web
我的推薦使用 SLF4J(Simple Logging Facade For Java)的logback來輸出日誌,其比log4j 要好,由於他效率更高。spring
日誌配置springboot
方法一(logback.xml)app
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <logger name="cn.wuyang.springboot" level="TRACE" /> <!-- 你的路徑和日誌級別 --> </configuration>
方法二(application.properties)工具
logging.level.org.springframework.web=INFO logging.level.cn.wuyang.springboot=TRACE
方法三(logback-spring.xml)性能
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml" /> <logger name="org.springframework.web" level="INFO"/> <logger name="cn.wuyang.springboot" level="TRACE" /> <springProfile name="dev"> <logger name="cn.wuyang.springboot" level="DEBUG" /> </springProfile> <springProfile name="staging"> <logger name="cn.wuyang.springboot" level="INFO" /> </springProfile> </configuration>
日誌本地落盤和日誌格式spa
ConsoleAppender.net
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d %p (%file:%line\) - %m%n</pattern> <charset>UTF-8</charset> </encoder> </appender>
RollingFileAppender線程
<appender name="baselog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>log/base.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>log/base.log.%d.%i</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 64 MB --> <maxFileSize>64 MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern> %d %p (%file:%line\)- %m%n </pattern> <charset>UTF-8</charset> <!-- 此處設置字符集 --> </encoder> </appender>
logback.xml
其中包含2中方式調用日誌
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!--定義 start --> <!-- %m輸出的信息,%p日誌級別,%t線程名,%d日期,%c類的全名,,,, --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d %p (%file:%line\) - %m%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <appender name="baselog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>log/base.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>log/base.log.%d.%i</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 64 MB --> <maxFileSize>64 MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern> %d %p (%file:%line\)- %m%n </pattern> <charset>UTF-8</charset> <!-- 此處設置字符集 --> </encoder> </appender> <!--定義 end --> <!-- 1.默認日誌格式並寫入文件 --> <include resource="org/springframework/boot/logging/logback/base.xml"/> <logger name="cn.wuyang.springboot" level="TRACE" > <appender-ref ref="baselog" /> </logger> <!-- 2.調用日誌格式並寫入文件 --> <!-- <root level="INFO"> <appender-ref ref="STDOUT" /> </root> <logger name="cn.wuyang.springboot" level="TRACE" > <appender-ref ref="baselog" /> </logger> --> </configuration>