logback简单配置详解

来源:互联网 发布:软件自动升级原理 编辑:程序博客网 时间:2024/06/05 00:35

注意:这是main或是test执行时候的样子,如果是web项目,log日志生成到中间件的目录下,

比如:

如果使用tomcat,则web项目的log日志生成到tomcat/bin/user_path(我的是logs路径,可以配置到pom.xml或是写死到里面,不过因为多系统多软件,还是建议不要写绝对路径)

下面就是简单的案例:

idea新建项目,项目结构和jar包:
这里写图片描述
类:

public class Test {    private static Logger Log = LoggerFactory.getLogger(Test.class);    @org.junit.Test    public void testLogBack(){        Log.debug("debug测试");        Log.info("info测试");        Log.error("error测试");        try{            throw new RuntimeException("error RuntimeException 测试");        }catch(Exception e){            Log.error(e.getMessage(),e);        }    }}

logback.xml配置

<?xml version="1.0" encoding="UTF-8"?><!--  scan:xml文件如果发生改变,将会被重新加载,默认值是true  scanPeriod:间隔扫描xml是否改变,scan为true是生效。默认是ms,默认间隔时间是1分钟。  debug:当此属性设置为true时,将打印出logback.xml内部日志消息,默认值是false。 --><configuration debug="true" scan="true" scanPeriod="30 seconds">    <!--      name:标签名,为了让其他标签调用的唯一标示      class:引用的类,从此类中可以看出该appender标签定义的是日志输出的位置    -->    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">        <encoder>            <!-- 常用                  %-数字xxx               分隔多少,不要和属性分开写,不挨着会报错                  %d{HH……} | d           日期,分开会报错                  %thread                线程                  %level | p | le        显示级别                  %logger{数字} | c | lo  类文件,虽然和class一样,但是如果包.类很长,这个可以获取简约长度展示                  %class | c             输出同上                  %file  | F             是哪个.java文件                  %m | msg | message     输出信息                  %M                     方法                  %line  | L             错误的行号,少用                  %caller{数字}           输出信息深度            -->            <pattern>%d{HH:mm:ss.SSS} [%-5level] [%-5class] [%-5M] - [%m]%n </pattern>        </encoder>    </appender>    <!-- 滚动日志 -->    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">        <file>logs/error.log</file>        <encoder>            <pattern>%d{HH:mm:ss.SSS} [%-5level] [%-5class] [%-5M] - [%m] %-5line%n </pattern>            <charset>GBK</charset>        </encoder>    <!-- 可以过滤在error日志中只输出error的信息 -->        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>ERROR</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>        <!-- 触发策略:当日志文件满足5MB就会出发回滚策略-->        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">            <maxFileSize>5MB</maxFileSize>        </triggeringPolicy>        <!-- 滚动策略 -->        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <fileNamePattern>logs/error.%d{yyyy-MM-dd}.log</fileNamePattern>            <!-- 保留30天 -->            <maxHistory>30</maxHistory>        </rollingPolicy>    </appender>    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">        <file>logs/info.log</file>        <encoder>            <pattern>%d{HH:mm:ss.SSS} [%-5level] [%-5class] [%-5M] - [%m]%n </pattern>            <charset>GBK</charset>        </encoder>        <filter class="ch.qos.logback.classic.filter.LevelFilter">            <level>INFO</level>            <onMatch>ACCEPT</onMatch>            <onMismatch>DENY</onMismatch>        </filter>        <!--            回滚策略:            其中minIndex和maxIndex分别对应的是满足5MB的日志文件的命名序号(1~10)对应%i.log中的i值。            如:xxx-2016-1.log,xxx-2016-2.log等,如果超过10个就会覆盖第一个        -->        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">            <fileNamePattern>logs/info.%d{yyyy-MM-dd}-%i.log</fileNamePattern>            <minIndex>1</minIndex>            <maxIndex>30</maxIndex>        </rollingPolicy>        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">            <maxFileSize>5MB</maxFileSize>        </triggeringPolicy>    </appender>    <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">        <file>logs/debug.log</file>        <encoder>            <pattern>%d{HH:mm:ss.SSS} [%-5level] [%-5class] [%-5M] - [%m]%n </pattern>            <charset>GBK</charset>        </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.FixedWindowRollingPolicy">            <fileNamePattern>logs/debug.%d{yyyy-MM-dd}-%i.log.zip</fileNamePattern>            <minIndex>1</minIndex>            <maxIndex>30</maxIndex>        </rollingPolicy>        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">            <maxFileSize>5MB</maxFileSize>        </triggeringPolicy>    </appender>    <!--        设置哪个目录或者包,类使用哪个日志     将控制impl包下的所有类的日志的打印,level是打印级别:debug,如果不设置level,它将继承它的上级<root>的日志级别“DEBUG”        如果没有设置addtivity,默认为true,将此loger的打印信息向上级传递;        如果没有设置appender-ref,此loger本身不打印任何信息。    -->    <root level="debug">        <appender-ref ref="CONSOLE" />        <appender-ref ref="ERROR" />        <appender-ref ref="INFO" />        <appender-ref ref="DEBUG" />    </root>    <!--        当执行impl类的方法时,会首先执行本身引用的appender-ref标签设置的格式打印;        当执行不在impl中的方法时,会将级别为“DEBUG”及大于“DEBUG”的日志信息传递给root,        root接到下级传递的信息,交给已经配置好的名为“STDOUT”和“log_file”的appender处理,“STDOUT”appender将信息打印到控制台,“log_file”appender将信息打印到日志文件;    -->    <!--打印mybatis的SQL语句-->    <logger name="com.ibatis" level="DEBUG" />    <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG" />    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" />    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" />    <logger name="java.sql.Connection" level="DEBUG" />    <logger name="java.sql.Statement" level="DEBUG" />    <logger name="java.sql.PreparedStatement" level="DEBUG" />    <!--日志异步到数据库 -->    <!--<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/databaseName</url>                <user>root</user>                <password>root</password>            </dataSource>        </connectionSource>    </appender>--></configuration>
0 0
原创粉丝点击