Logback学习总结

使用前提

Logback-classic 依赖 slf4j-api.jar 和 logback-core.jar

Logback选择配置:

  1. 尝试在 classpath 下查找文件 logback-test.xml;
  2. 如果文件不存在,则查找文件 logback.xml;
  3. 如果两个文件都不存在,logback 用 BasicConfigurator 自动对自己进行配置,这会导致记录输出到控制台。

-------------------------------------------------------------------------------------------------------------------------------------

Level(日志级别)

记录请求级别为 p,其 logger 的有效级别为 q,只有则当 p>=q时,该请求才会被执行。

TRACE < DEBUG < INFO < WARN < ERROR

-------------------------------------------------------------------------------------------------------------------------------------

cofiguration (根节点)

属性

scan:默认true,为true时文件修改会重新加载

debug:默认false,为true时打印logback内部日志信息

scanPeriod:设置监测修改的时间间隔,单位毫秒

-------------------------------------------------------------------------------------------------------------------------------------

logger、root(configuration子节点)

属性

name(root没有):名称(适配的包名)

level:输出日志的级别

注意

可以指定多个appender,如果未指定appender,将继承最近父层声明的appender

root默认level为debug级别

logger 会把记录输出到它自身的 appender 和它所有祖先的 appender

-------------------------------------------------------------------------------------------------------------------------------------

appender(configuration子节点)

属性

name:指定appender的名称

class:指定appender的类型

子元素

filter

layout

通用

OutputStreamAppender

  1. ConsoleAppender
  2. FileAppender
  3. RollingFileAppender

属性

类型

描述

encoder

Encoder

参见 OutputStreamAppender 属性

target(console)

String

字 符 串 “ System.out ” 或 “ System.err ”。 默 认 为 “System.out”。

file(file)

String

被写入的文件名。如果文件不存在,则创建之。 没有默认值。 如果文件的父目录不存在,FileAppender 会自动创建各 级不存在的目录。

append(file)

boolean

如果 true,事件被追加到现存文件尾部。 如果 false,清空现存文件。 默认为 true。

rollingPolicy(rollingfile)

RollingPolicy

当发生滚动时,决定 RollingFileAppender 的行为。

triggeringPolicy(rollingfile)

TriggeringPolicy

告知 RollingFileAppender 何时激活滚动。

 RollingPolicy

  1. FixedWindowRollingPolicy 按窗口滚动

  2. TimeBasedRollingPolicy 按时间滚动

    <configuration> <!-- 按窗口滚动 --> <appender name="FILE_INDEX" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>testFile.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>testFile.%i.log.zip</fileNamePattern> <minIndex>1</minIndex> <maxIndex>3</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize> </triggeringPolicy> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> </encoder> </appender> <!-- 按时间滚动 --> <appender name="FILE_DATE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logFile.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- daily rollover --> <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- keep 30 days worth of history --> <maxHistory>30</maxHistory> <!-- 设置文件大小 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> -->
    1 </rollingPolicy> 2 <encoder> 3 <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 4 </encoder>
    </appender> <root level="DEBUG"> <appender-ref ref="FILE_INDEX" /> </root> </configuration>

SocketAppender(略)

JMSAppenderBase

  1. JMSTopicAppender
  2. JMSQueueAppender

属性

类型

描述

InitialContextFactoryName

String

初 始 JNDI 上 下 文 工 厂 的 类 名 。 如果有 jndi.properties,或 JMSAppenderBase 的子类运行 在应用程序服务器里,就不需要设置该属性。 如果设置了该属性,也应当设置 ProviderURL 属 性。

ProviderURL

String

JNDI 服务提供商的配置信息。属性值应当包含一 个 URL 字符串,比如 ldap://somehost:389。 只有当指定了 InitialContextFactoryName 时,才有 效;否则忽略该属性。

URLPkgPrefixes

String

包含当加载 URL 上下文工厂时所用到的包名前缀 列表,以冒号分隔。

UserName

String

创建主题或队列连接时的用户名。

Password

String

创建主题或队列连接时的密码。

TopicConnectionFactoryBindingName

String

主题工厂的名称。

TopicBindingName

String

主题名称。

QueueConnectionFactoryBindingName

String

队列工厂的名称。

QueueBindingName

String

队列名称。

1<configuration> 2 <appender name="Topic" class="ch.qos.logback.classic.net.JMSTopicAppender"> 3 <InitialContextFactoryName> 4 org.apache.activemq.jndi.ActiveMQInitialContextFactory 5 </InitialContextFactoryName> 6 <ProviderURL>tcp://localhost:61616</ProviderURL> 7 <TopicConnectionFactoryBindingName> 8 ConnectionFactory 9 </TopicConnectionFactoryBindingName> 10 <TopicBindingName>MyTopic</TopicBindingName> 11 </appender> 12 13 <appender name="Queue" class="ch.qos.logback.classic.net.JMSQueueAppender"> 14 <InitialContextFactoryName> 15 org.apache.activemq.jndi.ActiveMQInitialContextFactory 16 </InitialContextFactoryName> 17 <ProviderURL>tcp://localhost:61616</ProviderURL> 18 <QueueConnectionFactoryBindingName> 19 ConnectionFactory 20 </QueueConnectionFactoryBindingName> 21 <QueueBindingName>MyQueue</QueueBindingName> 22 </appender> 23 24 <root level="debug"> 25 <appender-ref ref="Topic" /> 26 </root> 27</configuration>

SMTPAppender(依赖 JavaMail API)

通过OnMarkerEvaluator去触发email

1Marker notifyAdminMarker = MarkerFactory.getMarker("NOTIFY_ADMIN"); 2logger.error(notifyAdminMarker, "This is a serious an error requiring the admin' attention", new Exception("Just testing")); 3 4 5<configuration> 6 <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender"> 7 <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator"> 8 <marker>NOTIFY_ADMIN</marker> 9 <!-- you specify add as many markers as you want --> 10 <marker>ANOTHER_MARKER</marker> 11 </evaluator> 12 <BufferSize>1050</BufferSize> 13 <SMTPHost>${smtpHost}</SMTPHost> 14 <To>${to}</To> 15 <From>${from}</From> 16 <layout class="ch.qos.logback.classic.html.HTMLLayout" /> 17 </appender> 18 <root> 19 <level value="debug" /> 20 <appender-ref ref="EMAIL" /> 21 </root> 22</configuration>

DBAppender(支持MySQL、SQLServer、Oracle)

表 logging_event

字段名

类型

描述

timestamp

big int

创建记录事件的时间戳。

formatted_message

text

经org.slf4j.impl.MessageFormatter 格式化后,被添加到记录 事件的消息。

logger_name

varchar

执行记录请求的 logger。

level_string

varchar

记录事件的级别。

reference_flag

smallint

用于标识那些关联了异常或 MDCproperty 值的记录事件。 其值由 ch.qos.logback.classic.db.DBHelper 计算。包含 MDC 或上下文属性的记录事件的 reference_flag 是 1。包含异常的 reference_flag 是 2。两者都包含的 reference_flag 是 3。

caller_filename

varchar

执行记录请求的文件名。

caller_class

varchar

执行记录请求的类。

caller_method

varchar

执行记录请求的方法。

caller_line

char

执行记录请求的行号。

event_id

int

记录事件的数据库 ID。

表 logging_event_property

字段名

类型

描述

event_id

int

记录事件的数据库 ID。

mapped_key

varchar

MDC 属性的键。

mapped_value

varchar

MDC 属性的值。

表 logging_event_exception

字段名

类型

描述

event_id

int

记录事件的数据库 ID。

i

smallint

完整的堆栈跟踪里的行索引。

trace_line

varchar

对应的行。

1<configuration> 2 <appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> 3 <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> 4 <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"> 5 <driverClass>com.mysql.jdbc.Driver</driverClass> 6 <jdbcUrl>jdbc:mysql://localhost:3306/logbackdb</jdbcUrl> 7 <user>logback</user> 8 <password>logback</password> 9 </dataSource> 10 </connectionSource> 11 </appender> 12 <root level="debug"> 13 <appender-ref ref="DB" /> 14 </root> 15</configuration>

自定义 Appender(略)

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java日志框架系列(3):logback框架配置详解

1.Logback配置1.配置步骤及默认配置logback即可以通过编程式配置,也可以通过xml的形式配置。logback配置步骤:1\.尝试在classpath下查找文件logbacktest.xml;2\.如果文件不存在,则查找文件logback.xml;3\.如果两

Logback学习总结 - HelloWorld