如何优雅的实现日志记录

logback是由log4j创始人设计的另一款日志组件。比起log4j,logback表现出了更强的性能。logback的内核被重写了,因此初始化内存加载也更小,在关键执行链路上性能也有了很大的提升。功能上,除了日志信息记录外,可以给日志设置生命周期,实现自动去除旧的日志。

logback的开发之处便保持了原有log4j的接口设计风格,因此对于原有日志组件的切换也很简单,只需要将jar包换成logback的,并不需要修改到原有的代码,只需修改配置文件即可。

springboot默认使用的便是logback,因此对于springboot工程来说,并不需要引入额外的jar包,只需在application.properties同级下增加logback.xml配置文件。

<configuration debug="false">
    <property name="LOG_PATH" value="/home"/>
    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期, %thread表示线程名, %-5level表示级别从左显示5个字符宽度, %msg表示日志消息, %n是换行-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--文件名和保留天数-->
            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
    <!--日志异步到数据库 -->
    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <driverClass>com.mysql.jdbc.Driver</driverClass>
                <url>jdbc:mysql://127.0.0.1:3306/dbName</url>
                <user>root</user>
                <password>123456</password>
            </dataSource>
        </connectionSource>
    </appender>
</configuration>
The end..

猜你喜欢

转载自blog.csdn.net/hsf15768615284/article/details/90632050