在开发中打印内容,使用 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>