zoukankan      html  css  js  c++  java
  • logback日志框架的简单使用

    1.首先在maven中增加依赖

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${jcl-over.version}</version>
    </dependency>

    定义各自版本

      <logback.version>1.1.11</logback.version>
      <jcl-over.version>1.7.12</jcl-over.version>

    因为采用的是maven聚合项目,所以这里 parent项目和common项目都需要加上,但是只需要给parent项目添加版本管理就行了

    2.web.xml配置

    <!--加载logback.xml配置文件-->
      <context-param>
        <param-name>logbackConfigLocation</param-name>
        <param-value>classpath:properties/logback.xml</param-value>
      </context-param>
      <listener>
        <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
      </listener>

    3.编写logback.xml

    在线工具,可以将log4j的properties文件直接转换成logback的xml文件,地址如下:

    http://logback.qos.ch/translator/

    logback的详细用法及其xml文件的相关语法,可参见它的用户向导,地址如下:

    http://logback.qos.ch/manual/introduction.html

    具体配置可以如下:(转自http://www.mkyong.com/logging/logback-xml-example/)更加具体的配置可以参考 文档 https://logback.qos.ch/manual/configuration.html

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd" debug="false"
                   scan="true" scanPeriod="30 second">
        <property name="PROJECT" value="app-demo" />
        <property name="ROOT" value="${catalina.base}/logs/${PROJECT}/" />
        <property name="FILESIZE" value="50MB" />
        <property name="MAXHISTORY" value="100" />
        <timestamp key="DATETIME" datePattern="yyyy-MM-dd HH:mm:ss" />
        <!-- 控制台打印 -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n</pattern>
            </encoder>
        </appender>
        <!-- ERROR 输入到文件,按日期和文件大小 -->
        <appender name="ERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${ROOT}%d/error.%i.log</fileNamePattern>
                <maxHistory>${MAXHISTORY}</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>${FILESIZE}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
        </appender>
        <!-- WARN 输入到文件,按日期和文件大小 -->
        <appender name="WARN-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>WARN</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${ROOT}%d/warn.%i.log</fileNamePattern>
                <maxHistory>${MAXHISTORY}</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>${FILESIZE}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
        </appender>
        <!-- INFO 输入到文件,按日期和文件大小 -->
        <appender name="INFO-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${ROOT}%d/info.%i.log</fileNamePattern>
                <maxHistory>${MAXHISTORY}</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>${FILESIZE}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
        </appender>
        <!-- DEBUG 输入到文件,按日期和文件大小 -->
        <appender name="DEBUG-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>DEBUG</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${ROOT}%d/debug.%i.log</fileNamePattern>
                <maxHistory>${MAXHISTORY}</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>${FILESIZE}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
        </appender>
        <!-- TRACE 输入到文件,按日期和文件大小 -->
        <appender name="TRACE-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>[%-5level] %d{${DATETIME}} [%thread] %logger{36} - %m%n</pattern>
            </encoder>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>TRACE</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${ROOT}%d/trace.%i.log</fileNamePattern>
                <maxHistory>${MAXHISTORY}</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>${FILESIZE}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
        </appender>
        <!-- Logger 根目录 -->
        <root level="DEBUG">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="ERROR-OUT" />
            <appender-ref ref="WARN-OUT" />
            <appender-ref ref="INFO-OUT" />
            <appender-ref ref="DEBUG-OUT" />
            <appender-ref ref="TRACE-OUT" />
        </root>
    </configuration>

    启动项目,效果如下:

    技术分享图片

    在百度资料的时候发现 控制台还可以给不同的日志级别有不同的颜色,好吧,原谅我的无知。插件名:grep-console

    测试结果如下:

    技术分享图片

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    年轻人如何创业?有什么好的建议?
    青年创新创业大赛北京赛区总决赛举行
    90后瘫痪女孩靠创业改变人生
    怎么利用淘宝赚钱?具体方法有哪些?
    淘宝赚钱的方法有哪些?做淘宝要注意哪些?
    现在做淘宝赚钱吗?要注意哪些?
    2019年开淘宝店赚钱吗?需要注意什么?
    淘宝赚钱软件有哪些?具体怎么赚钱?
  • 原文地址:https://www.cnblogs.com/matd/p/10727957.html
Copyright © 2011-2022 走看看