SLF4J+LogBack总结Word文档格式.docx
- 文档编号:6705708
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:14
- 大小:130.26KB
SLF4J+LogBack总结Word文档格式.docx
《SLF4J+LogBack总结Word文档格式.docx》由会员分享,可在线阅读,更多相关《SLF4J+LogBack总结Word文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
logback-classic-1.0.6.jar
logback-core-1.0.6.jar
slf4j-api-1.6.6.jar
logback.xml
三,使用
configuretion》appender(负责写日志的组件)》filter
root(root》loger)
loger(root也是loger元素)
appenderConsoleAppender(写入控制台)
FileAppender(写入文件中)
RollingFileAppender(rollingPolicy滚动策略:
TimeBasedRollingPolicyFixedWindowRollingPolicy;
triggeringPolicy触发策略:
SizeBasedTriggeringPolicy)
filterLevelFilter(级别过滤器)包括:
<
level>
<
onMatch>
onMisMatch>
ThresholdFilter(临界值过滤器)
EvaluatorFilter(求值过滤器)
四,注意
1,日志形式:
文件形式日志、控制台形式日志、数据库形式日志、JMS形式日志、mail形式日志。
日志可以使用不同的方式生成。
2,简洁的代码写法:
Log4j语句:
if(logger.isDebugEnabled()){ logger.debug("
Userwithaccount"
+user.getAccount()+"
failedauthentication;
"
+"
suppliedcryptedpassword"
+user.crypt(password)+"
doesnotmatch."
);
}
等价的LOGBack语句如下:
logger.debug("
Userwithaccount{}failedauthentication;
+ "
suppliedcryptedpassword{}doesnotmatch."
,user.getAccount(),user.crypt(password));
3,过滤器:
过滤器,执行一个过滤器会有返回个枚举值:
即DENY,NEUTRAL,ACCEPT其中之一。
返回DENY,日志将立即被抛弃不再经过其他过滤器;
返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;
返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。
过滤器被添加到<
Appender>
中,为<
添加一个或多个过滤器后,
可以用任意条件对日志进行过滤。
有多个过滤器时,按照配置顺序执行。
4,查找logback.xml文档的顺序:
5,Appender的内容:
6,Logback中各个节点之间的关系:
五,代码(各种logback.xml配置)
1,基本配置
代码:
?
xmlversion="
1.0"
encoding="
UTF-8"
>
configuration>
appendername="
STDOUT"
class="
ch.qos.logback.core.ConsoleAppender"
encoder>
pattern>
%d{yyyy-MM-ddHH:
mm:
ss.SSS}[%thread]%-5level%logger{36}-%msg%n<
/pattern>
/encoder>
/appender>
rootlevel="
DEBUG"
appender-refref="
/>
/root>
/configuration>
说明:
logback.xml的基本配置信息都包含在configuration标签中,需要含有至少一个appender标签用于指定日志输出方式和输出格式,root标签为系统默认日志进程,通过level指定日志级别,通过appender-ref关联前面指定顶的日志输出方式。
例子中的appender使用的是ch.qos.logback.core.ConsoleAppender类,用于对控制台进行日志输出,其中encoder标签指定日志输出格式为“时间线程级别类路径信息”logback的文件日志输出方式还提供多种日志分包策略。
2,文件日志配置
viewplaincopytoclipboardprint?
ROLLING"
ch.qos.logback.core.rolling.RollingFileAppender"
file>
E:
/logs/mylog.txt<
/file>
rollingPolicyclass="
ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
!
--rolloverdaily-->
fileNamePattern>
/logs/mylog-%d{yyyy-MM-dd_HH-mm}.%i.log<
/fileNamePattern>
maxHistory>
5<
/maxHistory>
timeBasedFileNamingAndTriggeringPolicy
ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"
--orwheneverthefilesizereaches100MB-->
maxFileSize>
100MB<
/maxFileSize>
/timeBasedFileNamingAndTriggeringPolicy>
/rollingPolicy>
%date%level[%thread]%logger{36}[%file:
%line]%msg%n<
文件日志输出采用的ch.qos.logback.core.rolling.RollingFileAppender类,它的基本属性包括<
指定输入文件路径,encoder指定日志格式。
其中,rollingPolicy标签指定的是日志分包策略,ch.qos.logback.core.rolling.TimeBasedRollingPolicy类实现的是基于时间的分包策略,分包间隔是根据fileNamePattern中指定的事件最小单位,比如例子中的%d{yyyy-MM-dd_HH-mm}的最小事件单位为分,它的触发方式就是1分钟,策略在每次想日志中添加新内容时触发,如果满足条件,就将mylog.txt复制到E:
/logs/目录并更名为mylog-2010-06-22_13-13.1.log,并删除原mylog.txt。
maxHistory的值为指定E:
/logs目录下存在的类似mylog-2010-06-22_13-13.1.log文件的最大个数,当超过时会删除最早的文件。
此外,策略还可以互相嵌套,比如本例中在时间策略中又嵌套了文件大小策略,ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP实现对单文件大小的判断,当超过maxFileSize中指定大大小时,文件名中的变量%i会加一,即在不满足时间触发且满足大小触发时,会生成mylog-2010-06-22_13-13.1.log和mylog-2010-06-22_13-13.2.log两个文件。
3,数据库日志配置
DB"
ch.qos.logback.classic.db.DBAppender"
connectionSourceclass="
ch.qos.logback.core.db.DriverManagerConnectionSource"
dataSource
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>
/password>
/dataSource>
/connectionSource>
数据库输出使用ch.qos.logback.classic.db.DBAppender类,数据源支持c3p0数据连接池,例子中使用的MySql,其他配置方式请参考官方文档。
使用数据库输出需要在数据库中建立3个表,建表脚本如下
#Logback:
thereliable,generic,fastandflexibleloggingframework.
#Copyright(C)1999-2010,QOS.ch.Allrightsreserved.
#
#Seehttp:
//logback.qos.ch/license.htmlfortheapplicablelicensing
#conditions.
#ThisSQLscriptcreatestherequiredtablesbych.qos.logback.classic.db.DBAppender.
#ItisintendedforMySQLdatabases.IthasbeentestedonMySQL5.1.37
#onLinux
BEGIN;
DROPTABLEIFEXISTSlogging_event_property;
DROPTABLEIFEXISTSlogging_event_exception;
DROPTABLEIFEXISTSlogging_event;
COMMIT;
CREATETABLElogging_event
(
timestmp
BIGINTNOTNULL,
formatted_message
TEXTNOTNULL,
logger_name
VARCHAR(254)NOTNULL,
level_string
thread_name
VARCHAR(254),
reference_flag
SMALLINT,
arg0
arg1
arg2
arg3
caller_filename
caller_class
caller_method
caller_line
CHAR(4)NOTNULL,
event_id
BIGINTNOTNULLAUTO_INCREMENTPRIMARYKEY
);
CREATETABLElogging_event_property
mapped_key
mapped_value
TEXT,
PRIMARYKEY(event_id,mapped_key),
FOREIGNKEY(event_id)REFERENCESlogging_event(event_id)
CREATETABLElogging_event_exception
i
SMALLINTNOTNULL,
trace_line
PRIMARYKEY(event_id,i),
4,其它日志配置
此外logback还提供基于mail,基于jmx等多种日志输出方式,你也可以通过继承ch.qos.logback.core.AppenderBase自己写appender实现
除了使用默认的日志主线程<
root>
外,还可以通过<
logger>
标签定制其他日志线程如:
loggername="
com.test"
level="
/logger>
其中name指定线程针对的包路径,level是日志级别,<
appender-ref>
定义使用那种appender。
例如要实现打印jdbc提交的sql,可以加入如下logger:
java.sql.Connection"
贴出我完整的logback.xml
--logoutputtofile
-->
--logoutputtoconsole
--
logoutputtodb-->
3306/tunneldb<
123123<
com.ttt.ttt"
打印sql
java.sql.Statement"
java.sql.PreparedStatement"
java.sql.ResultSet"
-->
总结:
logback提供了丰富而高效的日志输出方式,并通过滚动策略,将实施时复杂的备份策略整合,极大的简化的部署成本,有兴趣的朋友可已考虑放到自己的项目里.官方提供了几百页的文档,内容相当详细,更多的内容请参照官方文档。
5,带说明的配置文件
--定义日志文件的存储地址勿在LogBack的配置中使用相对路径-->
propertyname="
LOG_HOME"
value="
c:
/log"
/>
--控制台输出-->
--日志输出编码-->
Encoding>
UTF-8<
/Encoding>
layoutclass="
ch.qos.logback.classic.PatternLayout"
--格式化输出:
%d表示日期,%thread表示线程名,%-5level:
级别从左显示5个字符宽度%msg:
日志消息,%n是换行符-->
ss.SSS}[%thread]%-5level%logger{50}-%msg%n
/layout>
--按照每天生成日志文件-->
FILE"
UTF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SLF4J LogBack 总结