日志篇

2018-09-10  本文已影响26人  简单coder

使用spring-boot框架(还不用boot你就落伍了!)
使用slf4j+logback打印日志

1.控制台打印

原生使用logback的工厂类进行打印



默认是info级别,在level类中,只有比当前级别高才会有日志打印



后续在配置文件中会说明如何更改默认级别

使用lombok三方可以自动帮我们注册log对象(就是少些下面这行代码)

private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

这里是配置

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
</dependency>

带参打印最好使用这种占位格式的打印:

log.info("name: {},password: {}", name, password);

2.文件打印

我们在线上的项目需要将文件打印到本地,而且最好是一天一打印,这里就需要我们对logback进行更细化的配置
在application.yml中(如果是properties后缀的话直接改后缀为yml即可)配置:


%d:打印时间
%msg:打印信息
%n: 换行
file生成日志打印文件位置,自己选择一个目录即可,生成如下文件



这样还是不能满足我们的需求,每日打印需要我们进行更细化的配置,这里使用xml的配置方式配置:

spring约定我们在resources目录下创建一个logback-spring的xml文件,文件内容配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!--logback的xml标签提示很不友好,建议直接复制一份改改即可-->
<configuration>

    <!--日志打印格式-->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %d - %msg%n
            </pattern>
        </layout>
    </appender>


    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--过滤器是为了只拦截error日志,当匹配时就拒绝,当不匹配的时候就通过-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略一天一次-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>/var/log/tomcat/sell/info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>


    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略一天一次-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>/var/log/tomcat/sell/error.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>


    <!--配置哪些appender需要打印-->
    <root level="info">
        <appender-ref ref="consoleLog" />
        <appender-ref ref="fileInfoLog" />
        <appender-ref ref="fileErrorLog" />
    </root>

</configuration>
errorlog infolog
上一篇下一篇

猜你喜欢

热点阅读