logback的应用与logback.xml详解(转)

 

          <root level=”DEBUG”> 
            <appender-ref ref=”FILE” /> 
          </root> 
        </configuration>
        上述配置表示仍稳定窗口情势转变日志文件,当文件大于20MB时,生成新的日志文件。窗口大小是1及3,当保存了3独归档文件后,将蒙最早的日记。
      <encoder>:对记录事件展开格式化。负责两码事,一是把日记信息变换成字节数组,二凡管字节数组写副到输出流。
PatternLayoutEncoder 是唯一有因此的还默认的encoder
,有一个<pattern>节点,用来安装日志的输入格式。使用“%”加“转换符”模式,假诺假定出口“%”,则须用“\”对“\%”举办转义。
    5.4、还有SocketAppender、SMTPAppender、DBAppender、SyslogAppender、SiftingAppender,并无常用,这里就非详解了。
我们可以参见官方文档(http://logback.qos.ch/documentation.html),还可以编写自己的Appender。
  6、子节点<loger>:用来装有一个保险要具体的某某一个近似的日记打印级别、以及指定<appender>。<loger>仅暴发一个name属性,一个可选的level和一个可选的addtivity属性。
可分包零个或多独<appender-ref>元素,标识是appender将相会补加至之loger
    name: 用来指定为之loger约束的某一个担保如故具体的某某一个好像。
    level: 用来安装打印级别,大小写无关:TRACE, DEBUG, INFO, WARN,
ERROR,
ALL和OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
假诺不安装此属性,那么当前loger将汇合连续上级的级别。
addtivity:
是否为上司loger传递打印音信。默认是true。同<loger>一样,可以涵盖零个或多单<appender-ref>元素,标识是appender将会面加加到此loger。
  7、子节点<root>:它为是<loger>元素,可是它是根本loger,是具有<loger>的上司。只有一个level属性,因为name已经给命名为”root”,且已是绝上边了。
    level: 用来装打印级别,大小写无关:TRACE, DEBUG, INFO, WARN,
ERROR, ALL和OFF,不可知装也INHERITED或者同义词NULL。 默认是DEBUG。
六、常用loger配置
<!– show parameters for hibernate sql 专为 Hibernate 定制 –>
<logger name=”org.hibernate.type.descriptor.sql.BasicBinder”
level=”TRACE” />
<logger name=”org.hibernate.type.descriptor.sql.BasicExtractor”
level=”DEBUG” />
<logger name=”org.hibernate.SQL” level=”DEBUG” />
<logger name=”org.hibernate.engine.QueryParameters” level=”DEBUG”
/>
<logger name=”org.hibernate.engine.query.HQLQueryPlan” level=”DEBUG”
/>

 

 

五、logback.xml常因而配备详解

 1、根节点<configuration>,包含下面多少个属性:
    scan:
当此属性设置为true时,配置文件要发转移,将晤面受重复加载,默认值为true。
    scanPeriod:
设置监测配置文件是否有修改的流年间隔,假设没于出时单位,默认单位凡阿秒。当scan为true时,此属性生效。默认的时距离为1分钟。
    debug:
当此属性设置为true时,将打印出logback内部日志消息,实时查看logback运行状态。默认值为false。
  例如:
    <configuration scan=”true” scanPeriod=”60 seconds”
debug=”false”> 
      <!–其他安排省略–> 
    </configuration>
  2、子节点<contextName>:用来设置上下文名称,每个logger都涉嫌到logger上下文,默认上下文称也default。但好接纳<contextName>设置成其他名字,用于区分不同应用程序的笔录。一旦设置,不能修改。
  例如:
    <configuration scan=”true” scanPeriod=”60 seconds”
debug=”false”> 
      <contextName>myAppName</contextName> 
      <!–其他安排省略–>
    </configuration>
  3、子节点<property>
:用来定义变量值,它起一定量只属性name和value,通过<property>定义的值会被插到logger上下文中,可以倘若“${}”来用变量。
    name: 变量的称
    value: 的值平常变量定义的价值
  例如:
    <configuration scan=”true” scanPeriod=”60 seconds”
debug=”false”> 
      <property name=”APP_Name” value=”myAppName” /> 
      <contextName>${APP_Name}</contextName> 
      <!–其他安排省略–> 
    </configuration>
  4、子节点<timestamp>:获取时间戳字符串,他起点儿只特性key和datePattern
    key: 标识此<timestamp> 的名字;
    datePattern:
设置以眼前工夫(解析配置文件之流年)转换为字符串的格局,遵守java.txt.SimpleDateFormat的格式。
  例如:
    <configuration scan=”true” scanPeriod=”60 seconds”
debug=”false”> 
      <timestamp key=”bySecond”
datePattern=”yyyyMMdd’T’HHmmss”/> 
      <contextName>${bySecond}</contextName> 
      <!– 其他安排省略–> 
    </configuration>
  5、子节点<appender>:负责写日记的机件,它来点儿单必备属性name和class。name指定appender名称,class指定appender的全限定名
    5.1、ConsoleAppender 把日志输出到控制台,有坐转节点:
      <encoder>:对日记举行格式化。(具体参数稍晚言语解 )
      <target>:字符串System.out(默认)或者System.err(区别不多说了)
    例如:
    <configuration> 
      <appender name=”STDOUT”
class=”ch.qos.logback.core.ConsoleAppender”> 
      <encoder> 
        <pattern>%-4relative [%thread] %-5level
%logger{35} – %msg %n</pattern> 
      </encoder> 
      </appender> 

            <rollingPolicy
class=”ch.qos.logback.core.rolling.FixedWindowRollingPolicy”> 
              <fileNamePattern>tests.%i.log.zip</fileNamePattern> 
              <minIndex>1</minIndex> 
              <maxIndex>3</maxIndex> 
            </rollingPolicy> 

  2、logback.xml配置
<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration debug=”false”>
<!–定义日志文件的存储位置 勿以 LogBack 的安排中行使相对路径–>
<property name=”LOG_HOME” value=”/home” />
<!– 控制高出口 –>
<appender name=”STDOUT”
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_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!–日志文件保留天数–>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<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>
<!–日志文件最酷的高低–>
<triggeringPolicy
class=”ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy”>
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>

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

          <root level=”DEBUG”> 
            <appender-ref ref=”FILE” /> 
          </root> 
        </configuration>
        上述配置表示每一天生成一个日记文件,保存30龙的日志文件。
        <configuration> 
          <appender name=”FILE”
class=”ch.qos.logback.core.rolling.RollingFileAppender”> 
            <file>test.log</file> 

<!– 日志输出级别 –>
<root level=”INFO”>
<appender-ref ref=”STDOUT” />
</root>
</configuration>

      <root level=”DEBUG”> 
        <appender-ref ref=”STDOUT” /> 
      </root> 
    </configuration>
    上述配置表示管>=DEBUG级其余日志都输出及控制台

      class=”ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy”:
查看时移动文件的分寸,假使超越指定大小会告知RollingFileAppender
触发时活动文件滚动。唯有一个节点:
        <maxFileSize>:这是活动文件的轻重缓急,默认值是10MB。
        <prudent>:当为true时,不辅助FixedWindowRollingPolicy。匡助提姆(Tim)eBasedRollingPolicy,不过出零星个限,1勿扶助吗不容许文件减弱,2休克设置file属性,必须留空。

其三、logback的安排介绍
  1、Logger、appender及layout
Logger作为日志的记录器,把它们关系到应用之照应的context上后,重要用以存放日志对象,也得定义日志类型、级别。
Appender重要用来指定日志输出的目标地,目的地可以是控制台、文件、远程套接字服务器、
MySQL、PostreSQL、 Oracle和另外数据库、 JMS和远程UNIX
Syslog守护进程等。 
Layout 负责把事件转换成字符串,格式化的日志音信的输出。
  2、logger context
逐条logger 都被波及到一个
LoggerContext,LoggerContext负责打造logger,也承受为培训结构排列各logger。其他具有logger也由此org.slf4j.LoggerFactory
类的静态方法getLogger取得。 getLogger方法以
logger名称为参数。用同一名字调用LoggerFactory.getLogger
方法所得到的永远都是同一个logger对象的援。
  3、有效级别与级别之继承
Logger 可以吃分配级别。级别包括:TRACE、DEBUG、INFO、WARN 和
ERROR,定义为ch.qos.logback.classic.Level类。假如logger没有吃分配级别,那么它用从今发生给分配级别之近年的祖宗这里继承级别。root
logger 默认级别是 DEBUG。
  4、打印模式及主导的挑规则
打印情势决定记录请求的级别。例如,假使 L 是一个 logger 实例,那么,语句
L.info(“..”)是相同修级别也 INFO的笔录语句。记录请求的级别在超或顶其
logger 的管事级别时给称呼被启用,否则,称为被剥夺。记录请求级别为 p,其
logger的灵光级别也 q,只有则当 p>=q时,该要才谋面为执行。
拖欠规则是 logback 的基本。级别排序也: TRACE < DEBUG < INFO <
WARN < ERROR

            <triggeringPolicy
class=”ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy”> 
              <maxFileSize>5MB</maxFileSize> 
            </triggeringPolicy> 
            <encoder> 
              <pattern>%-4relative [%thread]
%-5level %logger{35} – %msg%n</pattern> 
            </encoder> 
          </appender> 

  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>${logback.version}</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>${logback.version}</version>
      </dependency>
  </dependencies>

图片 1

 

<!–myibatis log configure–>
<logger name=”com.apache.ibatis” level=”TRACE”/>
<logger name=”java.sql.Connection” level=”DEBUG”/>
<logger name=”java.sql.Statement” level=”DEBUG”/>
<logger name=”java.sql.PreparedStatement” level=”DEBUG”/>
七、Demo
  1、添加依赖包logback使用得同slf4j一于利用,所以总共需要丰盛依赖的包有slf4j-api
logback以要同slf4j一起以,所以总共用添加依赖的包有slf4j-api.jar,logback-core.jar,logback-classic.jar,logback-access.jar这一个小用非顶用未弥加依了,maven配置
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <logback.version>1.1.7</logback.version>
    <slf4j.version>1.7.21</slf4j.version>
  </properties>

logback的配置,需要配备输出源appender,打日志的loger(子节点)和root(根节点),实际上,它输出日志是从子节点起首,子节点假若有输出源直接输入,假使听由,判断配置的addtivity,是否如上边传递,即是否为root传递,传递则应用root的输出源,否则不出口日志。

    5.3、RollingFileAppender:滚动记录文件,先以日志记录及指定文件,当副某个条件时,将日志记录及任何文件。有以转节点:
      <file>:被形容副的文件称,可以是绝对目录,也得是相对目录,假若上级目录不在会自动成立,没有默认值。
      <append>:倘若是 true,日志被多至文件结尾,倘使是false,清空现存文件,默认是true。
      <rollingPolicy>:当有滚动时,决定RollingFileAppender的一言一行,涉及文件移动和重命名。属性class定义具体的滚策略类
      class=”ch.qos.logback.core.rolling.提姆eBasedRollingPolicy”:
最常用之滚策略,它依照时间来制订滚动策略,既承担滚动也担负出发滚动。有坐转节点:
        <fileNamePattern>:必要节点,包含文件名及“%d”转换符,“%d”可以蕴涵一个java.text.SimpleDateFormat指定的年月格式,如:%d{yyyy-MM}。
假设一向行使 %d,默认格式是
yyyy-MM-dd。RollingFileAppender的file字节点可来可无论,通过设置file,能够为移动文件和归档文件指定不同地点,当明天记总是记录及file指定的文本(活动文件),活动文件之讳不会晤转;
万一没装file,活动文件之名字会按照fileNamePattern
的价,每隔一段时间改变同样次于。“/”或者“\”会为当作目录分隔符。
        <maxHistory>:
可挑选节点,控制保留的归档文件的最老数目,超出数量就去旧文件。倘诺设置每个月滚动,且<maxHistory>是6,则只是保留目前6单月的文书,删除在此之前的故文件。注意,删除旧文件是,这么些为归档而创办的目也相会被删去。

  3、java代码
  /**
  * Hello world!
  */
  public class App {

      <triggeringPolicy >: 告知 RollingFileAppender
合适激活滚动。
      class=”ch.qos.logback.core.rolling.FixedWindowRollingPolicy”
遵照固定窗口算法重命名文件的滚策略。有盖转节点:
        <minIndex>:窗口索引最小值
        <maxIndex>:窗口索引最酷价值,当用户指定的窗口过分外时,会活动将窗口设置为12。
        <fileNamePattern>:必须带有“%i”例如,假而尽小值和最要命价值分别吗1跟2,命名格局呢
mylog%i.log,会出归档文件mylog1.log及mylog2.log。还得指定文件收缩选项,例如,mylog%i.log.gz
或者 没有log%i.log.zip
      例如:
        <configuration> 
          <appender name=”FILE”
class=”ch.qos.logback.core.rolling.RollingFileAppender”> 
            <rollingPolicy
class=”ch.qos.logback.core.rolling.TimeBasedRollingPolicy”> 
              <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 
              <maxHistory>30</maxHistory> 
            </rollingPolicy> 
            <encoder> 
              <pattern>%-4relative [%thread]
%-5level %logger{35} – %msg%n</pattern> 
            </encoder> 
          </appender> 

      <root level=”DEBUG”> 
      <appender-ref ref=”FILE” /> 
      </root> 
    </configuration>
    上述配置表示将>=DEBUG级别之日记都输出及testFile.log

转自果壳网:行走在云端的愚公:

季、logback的默认配置
一旦安排文件 logback-test.xml 和 logback.xml 都非设有,那么 logback
默认地会调用BasicConfigurator
,创设一个顶小化配置。最小化配置由一个事关到根 logger 的ConsoleAppender
组成。输出用形式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} –
%msg%n 的 PatternLayoutEncoder 进行格式化。root logger 默认级别是
DEBUG。
  1、Logback的配备文件
Logback 配置文件之语法相当灵活。正缘巧,所以不可能用 DTD 或 XML schema
举行定义。即便如此,可以这么讲述配置文件的中坚社团:以<configuration>起初,前边有零个或多单<appender>元素,有零个或六只<logger>元素,有太多一个<root>元素。
  2、Logback默认配置的步调
    (1). 尝试以 classpath下查找文件logback-test.xml;
    (2). 假设文件不存,则查找文件logback.xml;
    (3).
假诺简单独公文还无有,logback用BasicConfigurator自动对团结开展配置,这会造成记录输出到控制台。

初稿路径:http://www.cnblogs.com/warking/p/5710303.html

二、logback取代log4j的理由:
  1、更快之兑现:Logback的根本重写了,在一部分至关首要执行路径上性提高10倍增以上。而且logback不仅性能提升了,开端化内存加载也还粗了。
  2、极度丰盛的测试:Logback经过了几年,数不到底刻钟的测试。Logback的测试了两样级其余。
  3、Logback-classic至极自然实现了SLF4j:Logback-classic实现了SLF4j。在应用SLF4j中,你还觉得不至logback-classic。而且以logback-classic十分自然地实现了slf4j ,

以切换至log4j或者其它,分外容易,只需要提供成外一个jar包就OK,根本无待去动这些经过SLF4JAPI实现之代码。
  4、相当充分的文档 官方网站有两百几近页的文档。
  5、自动重新加载配置文件,当配置文件修改了,Logback-classic能自动重新加载配置文件。扫描过程快且安全,它并不需要其它创造一个围观线程。这个技术充裕保证了应用程序能走得大欢在JEE环境之中。
  6、Lilith是log事件之观望者,和log4j的chainsaw类似。而lilith仍可以够处理卓殊数量的log数据

  7、谨慎之格局与良温馨的復苏,在谨慎情势下,六个FileAppender实例跑在多单JVM下,可以安全地写道同一个日记文件。RollingFileAppender会有些限制。Logback的FileAppender和其的子类包括
RollingFileAppender可以非凡要好地从I/O分外中还原。
  8、配置文件可以处理不同的事态,开发人员平常索要看清不同的Logback配置文件于不同之环境下(开发,测试,生产)。而那些配置文件就不过出局部百般粗的两样,可以通过,和来实现,这样一个配备文件就足以适应五只条件。
  9、Filters(过滤器)有些上,需要诊断一个题材,需要从起日记。在log4j,只暴发回落日志级别,可是这样会见由起大量的日记,会影响使性能。在Logback,你可持续
保持好日志级别而消除某种特殊意况,如alice那些用户登录,她底日记将自在DEBUG级别而别用户可以继承由在WARN级别。要落实者职能只需要加以4行XML配备。可以参考MDCFIlter

  10、SiftingAppender(一个优秀多力量的Appender):它可据此来分日志文件依照外一个加以的运作参数。如,SiftingAppender可以区分日志事件以及进用户的Session,然后每个用户会来一个日记文件。
  11、自动减已经于出去的log:RollingFileAppender在爆发新文件的时候,会自动减已经由出去的日志文件。压缩是单异步过程,所以仍然于生之日记文件,在回落过程被行使不会合受任何影响。
  12、堆栈树带有包版本:Logback在起来堆栈树日志时,会带动达保险的数额。
  13、自动去除旧的日志文件:通过设置提姆(Tim)eBasedRollingPolicy或者SizeAnd提姆eBasedFNATP的maxHistory属性,你可以决定就有日志文件的尽深数据。假若安maxHistory
12,这这个log文件超越12单月之还碰面于电动移除。

一、logback的介绍
  Logback是由于log4j开创者设计之别一个开源日志组件,官方网站:
http://logback.qos.ch。它当前分为下面下个模块:
  logback-core:其余少单模块的根基模块
  logback-classic:它是log4j的一个立异版,同时其完整兑现了slf4j
API使您可以生便宜地变成外日志系统而log4j或JDK14 Logging
  logback-access:访问模块和Servlet容器集成提供经过Http来访问日志的效率

八、总结

    public static void main(String[] args) {
      logger.info(“logback 成功了”);
      logger.error(“logback 成功了”);
      logger.debug(“logback 成功了”);
    }
  }

    5.2、FileAppender:把日志添加到文件,有因为转节点:
      <file>:被形容副的文本称,可以是周旋目录,也不过纯属目录,假使上级目录不在会自动创建,没有默认值。
      <append>:假设是 true,日志被长至文件结尾,假诺是
false,清空现存文件,默认是true。
      <encoder>:对记录事件进展格式化。(具体参数稍晚称解

      <prudent>:假使是
true,日志会被晋城的勾勒副文件,尽管此外的FileAppender也在向这么些文件举办写入操作,效率低,默认是
false。
    例如:
    <configuration> 
      <appender name=”FILE”
class=”ch.qos.logback.core.FileAppender”> 
        <file>testFile.log</file> 
        <append>true</append> 
        <encoder> 
          <pattern>%-4relative [%thread] %-5level
%logger{35} – %msg%n</pattern> 
        </encoder> 
      </appender> 

相关文章