logback使用3-logback配置

配置文件的语法

logback的配置文件主要由以下三个部分,appender,logger,root!

basicSyntax

logback的配置文件很灵活,他不需要特别声明一个DTD或者XML Schama,它基本可以被描述为这样:<configuration>元素下,有0个或则会多个的appender,有0个或者多个的logger,以及最多一个的root元素!

注意点:1logback的配置文件标签名大小写敏感,例如:<logger>, <Logger><LOGGER>是不可用的.

1配置logger

在学习这个配置之前,你首先应该理解级别继承,以及基本的选择规则!

logger的结构如下(name属性必选,level属性可选(TRACE,INFO,DEBUG,WARN,ERROR,ALL ,OFF,The special case-insensitive value INHERITED, or its synonym NULL, will force the level of the logger to be inherited from higher up in the hierarchy.),additivity为true或者false,):

<logger name="test1" level="info" additivity=”true”>
<appender-ref name=""> 
</logger>

注意点:不像log4j,logback classic在添加新的appender之前不会删除或者关闭之前引用的appender!

2配置root

root元素配置root级别的logger,他有一个level的属性,他没有别的其他属性,因为additivity 不会应用于root logger上,也不需要name属性,因为他的name就是root!
root的level不能够使用 INHERITED 或者 NULL. 
例如:
 <root level="DEBUG">              <appender-ref ref="STDOUT" />  </root> 
3配置appender

appenderSyntax

appender有两个必选属性name和class,其中是class属性的值为应用实例的有效类路径!
appender有0个或者多个layout标签,encoder标签和filter标签!
appender包含若干应用于javabean的属性,这个会在之后讨论到,但是注意这些属性是不可见的!
layout标签有一个属性class,这个属性值是layout对应实例化的类全名!layout还包含实例化类的若干参数!例如:PatternLayout!
encoder标签有一个属性class,属性值是encoder class的类全名!例如:PatternLayoutEncoder!
<configuration> 
 <appender name="FILE" class="ch.qos.logback.core.FileAppender">    
<file>myApp.log</file>    
<encoder>      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>   </encoder> 
 </appender> 
 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
  <encoder>      
<pattern>%msg%n</pattern>   
 </encoder>  
</appender>
  <root level="debug">   
 <appender-ref ref="FILE" />  
  <appender-ref ref="STDOUT" />  
</root>
</configuration>
注意:一个encoder只能属于一个appender,不能被多个appender共享,layout也是一样的~
appender累积
同一个appender被root使用,同时被其他logger使用,到时候输出日志可能会重复输出!即日志会向上级logger输出!
<configuration> 
 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
  <encoder>      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>    </encoder> 
 </appender>  
<logger name="chapters.configuration">  
  <appender-ref ref="STDOUT" />  
</logger> 
 <root level="debug">   
 <appender-ref ref="STDOUT" />  
</root>
</configuration>
重写累积特性

通过设置additivity="false"可以让日志不向上一级别的logger输出!

设置context name

默认的context name 是default,你可以通过如下的设置更改:

<configuration>  <contextName>myAppName</contextName>

输出比较:

2012-03-25 15:43:52,041 default [main] INFO Test1 – info

添加后:

2012-03-25 15:47:09,303 myapp [main] INFO Test1 – info

Propertity 替代

 

和其他一些脚本语言一样,logback配置文件支持定义或者替代属性,可以配置在logback本身的配置文件,外部文件,其他外部资源甚至是云计算中!

可以使用${开头,以}结束,当出现${key}将被对应的值替代!

propertity可以被定义在local,context ,system 范围!

local scope是默认的,他是从配置位置开始到配置文件结束!

context scope范围是:配置开始到他被清除!一旦定义一个context scope,它将是context的一部分!因此他可以被任何log event使用,包括通过序列化的方式到远程主机上!

system scope范围是:配置在JVM的属性里,直到JVM停止或则它被清除!

HOSTNAME  和CONTEXT_NAME 这两个属性是cotext scope,被经常使用!

logback查找的顺序:local—>context—>System—>OS环境变量

定义属性

下面是一个local scope例子

<configuration>  
<property name="USER_HOME" value="/home/sebastien" /> 
 <appender name="FILE" class="ch.qos.logback.core.FileAppender">    <file>${USER_HOME}/myApp.log</file>  
  <encoder>      <pattern>%msg%n</pattern>   </encoder>  
</appender> 
 <root level="debug"> 
   <appender-ref ref="FILE" />  </root>
</configuration>

下面是一个System scope例子:

java -DUSER_HOME="/home/sebastien" MyApp2

使用外部文件

<configuration>
<property file="src/main/java/chapters/configuration/variables1.properties" />

属性范围

使用scope的属性来指令范围

<property scope="context" name="nodeId" value="node1" />

嵌套变量属性

 

<define name="rootLevel" class="a.class.implementing.PropertyDefiner">
<aProperty>of a.class.implementing.PropertyDefiner</aProperty>
</define>

 

 

配置文件的条件语句

开发者可以配置不同的logback的文件,以方便用来开发,测试,以及形成产品;这些配置信息可能大部分是相同的,但是有一部分不相同,为了避免重复配置,可以使用if,then,else进行条件判断来满足不同目标的环境!

下面是一个例子:

<!-- if-then form -->   
<if condition="some conditional expression">  
  <then>      ...    <
/then> 
 </if>
    <!-- if-then-else form -->  
<if condition="some conditional expression"> 
  <then>      ...    </then>    
<else>      ...    </else> 
 </if>

例子见:http://logback.qos.ch/manual/configuration.html#definingPropsOnTheFly

从JNDI获得变量

<configuration>  
<insertFromJNDI env-entry-name="java:comp/env/appName" as="appName" /> 
 <contextName>${appName}</contextName>

<configuration>


文件包含

<configuration>  <include file="src/main/java/chapters/configuration/includedConfig.xml"/>

注意:目标文件必须包含<included>标签

添加Context Listener

转载于:https://www.cnblogs.com/mapengfei00099/archive/2012/03/25/2416793.html

logback-core-1.4.6 是一个日志框架库,主要用于在应用程序中记录和管理日志信息。如果它无法写入数据库,可能是由于以下几个原因: 1. 配置错误:可能是由于配置文件中的一些错误导致的无法写入数据库。例如,数据库连接信息、表名、字段名等配置不正确,导致无法正确地将日志信息写入数据库。在使用 logback-core-1.4.6 时,我们需要确保相关的数据库配置正确无误。 2. 数据库连接问题:可能是由于数据库连接失败导致的无法写入数据库。如果数据库服务器不可用、网络连接故障或者数据库配置不正确,都有可能导致 logback-core-1.4.6 无法正确地与数据库建立连接,从而无法将日志信息写入数据库。 3. 权限问题:可能是由于应用程序没有足够的权限来写入数据库。如果应用程序的权限不足以访问和写入数据库,logback-core-1.4.6 将无法成功地将日志信息写入数据库。 为了解决这个问题,我们可以采取以下几个步骤: 1. 检查配置文件:确保 logback-core-1.4.6 的配置文件中包含正确的数据库连接信息,包括数据库的连接地址、用户名、密码等。 2. 检查数据库连接:确保数据库服务器可用,并且网络连接正常。可以尝试通过其他方式连接数据库,以确保数据库服务器和数据库配置正确。 3. 检查权限设置:确保应用程序具有足够的权限来访问和写入数据库。可以检查数据库的用户权限设置,以及应用程序运行的用户的权限设置。 4. 添加日志输出:可以在应用程序中添加额外的日志输出,以便更好地定位问题。可以输出数据库连接的错误信息、异常信息等,以便更好地了解 logback-core-1.4.6 无法写入数据库的具体原因。 综上所述,logback-core-1.4.6 无法写入数据库可能是由于配置错误、数据库连接问题或者权限问题所致。通过检查配置文件、数据库连接和权限设置,并添加额外的日志输出,可以帮助我们定位和解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值