日志(二)从Log4j的配置文件说起
来源:互联网 发布:淘宝店铺模板一键安装 编辑:程序博客网 时间:2024/04/27 22:49
一.配置文件的组成
我们都知道,使用Log4j,一定要有配置文件,一般的log4j.properties配置文件如下
# 可设置级别:TRACE→DEBUG→INFO→WARNING→ERROR→FATAL→OFF # 高级别level会屏蔽低级别level。 # debug:显示debug、info、error # info:显示info、error #log4j.rootLogger=DEBUG,console,file #子类重新定义日志级别,logger的名字是日志类的权限类名 #log4j.logger.org.linkinpark.commons.logtest.Log4jTest1=ERROR #子类重新定义日志级别,category的名字是日志类的包名,可以将category理解为Java的package。 #log4j.category.org.linkinpark.commons.logtest1=ERROR,file,rolling_file,daily_rolling_file log4j.rootLogger=DEBUG,console,daily_rolling_file # 以下是rootLogger的配置,子类默认继承,但是子类重写下面配置=rootLogger+自己配置,我晕 #输出到控制台 log4j.appender.console=org.apache.log4j.ConsoleAppender #设置输出样式 log4j.appender.console.layout=org.apache.log4j.PatternLayout #日志输出信息格式为 log4j.appender.console.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n #DEBUG以上级别输出,Threshold,入口,临界值 #log4j.appender.console.Threshold=DEBUG #日志编码方式 #log4j.appender.console.Encoding=UTF-8 #是否立即输出 #log4j.appender.console.ImmediateFlush=true #使用System.error作为输出 #log4j.appender.console.Target=System.error #输出到文件(这里默认为追加方式) log4j.appender.file=org.apache.log4j.FileAppender #输出文件位置 log4j.appender.file.File=/Users/LinkinPark/WorkSpace/linkin-log-test/log/log4j.log #是否在原日志基础上追加输出日志。true,默认,追加。false,清掉原来日志重新添加 log4j.appender.file.Append=true #样式为TTCCLayout #log4j.appender.file.layout=org.apache.log4j.TTCCLayout #样式为HTMLLayout log4j.appender.file.layout=org.apache.log4j.HTMLLayout log4j.appender.file.File=/Users/LinkinPark/WorkSpace/linkin-log-test/log/log4j.html #log4j.appender.file.layout=org.apache.log4j.PatternLayout #log4j.appender.file.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n #按大小滚动文件(这里默认为追加方式) log4j.appender.rolling_file=org.apache.log4j.RollingFileAppender #输出文件位置 log4j.appender.rolling_file.File=/Users/LinkinPark/WorkSpace/linkin-log-test/log/rolling_log4j.log log4j.appender.rolling_file.Append=true #文件达到最大值自动更名 log4j.appender.rolling_file.MaxFileSize=1KB #最多备份100个文件 log4j.appender.rolling_file.MaxBackupIndex=100 log4j.appender.rolling_file.layout=org.apache.log4j.PatternLayout log4j.appender.rolling_file.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n #按日期滚动文件 log4j.appender.daily_rolling_file=org.apache.log4j.DailyRollingFileAppender #输出文件位置 log4j.appender.daily_rolling_file.File=/Users/LinkinPark/WorkSpace/linkin-log-test/log/daily_rolling_log4j.log #文件滚动日期格式 #每天:.YYYY-MM-dd(默认) #每星期:.YYYY-ww #每月:.YYYY-MM #每隔半天:.YYYY-MM-dd-a #每小时:.YYYY-MM-dd-HH #每分钟:.YYYY-MM-dd-HH-mm #log4j.appender.daily_rolling_file.DatePattern=.yyyy-MM-dd log4j.appender.daily_rolling_file.DatePattern=.YYYY-MM-dd-HH-mm log4j.appender.daily_rolling_file.layout=org.apache.log4j.PatternLayout log4j.appender.daily_rolling_file.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n #自定义样式 #%c 输出所属的类目,通常就是所在类的全名 #%C 输出Logger所在类的名称,通常就是所在类的全名 #%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},%d{ABSOLUTE},%d{DATE} #%F 输出所在类的类名称,只有类名。 #%l 输出语句所在的行数,包括类名+方法名+文件名+行数 #%L 输出语句所在的行数,只输出数字 #%m 输出代码中指定的讯息,如log(message)中的message #%M 输出方法名 #%p 输出日志级别,即DEBUG,INFO,WARN,ERROR,FATAL #%r 输出自应用启动到输出该log信息耗费的毫秒数 #%t 输出产生该日志事件的线程名 #%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” #%% 用来输出百分号“%” #log4j.appender.Linkin.layout.ConversionPattern=%n[%l%d{yy/MM/dd HH:mm:ss:SSS}][%C-%M] %m #log4j.appender.Linkin.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[%C]-[%p] %m%n #log4j.appender.Linkin.layout.ConversionPattern = %d{ABSOLUTE} %5p %t %c{2}:%L - %m%n
Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局)。其中,Logger负责记录日志,Appender负责输出到什么地方,Layout负责以什么格式输出,输出哪些附加信息等。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。
二.Logger
Loggers组件在此系统中被分为五个级别:TRACE→DEBUG→INFO→WARNING→ERROR→FATAL→OFF。等级高的level自动屏蔽等级低的level
1,Logger为单态模式,相同名字的logger只会有一个实例。如果在构建一个同名的Logger,log4j会返回之前的Logger实例。
2,一般情况下都以类名作为Logger的名称。Logger的名字类似于Java中的Package,大小写敏感,用点分开且具有继承关系。log4j.properties中通过名称来配置Logger的属性。
3,在对Logger实例进行命名时,没有限制,可以取任意自己感兴趣的名字。一般情况下建议以类的所在位置来命名Logger实例,这是目前来讲比较有效的Logger命名方式。这样可以使得每个类建立自己的日志信息,便于管理。
4,Log4j中有一个根记录器rootLogger,它是所有Logger的父类。
在log.properties配置log4j.properties中,log4j.logger后面配置的是Logger。
如果某个Logger没有配置,则使用它的父亲配置,知道找到为止。一般情况下,只需要配置根记录器rootLogger即可,所有的logger都会沿用rootLogger的配置。如果有自己配置子类logger,会出现下面这种情况,
如果子类重新定义了appender,仍然会继承rootLogger的配置,也就是说2份日志输出了。不仅输出自己定义的那份,也会默认输出rootLogger的配置,所以定义子类logger时,最后只更改日志级别。
5.类别category配置
logger还有一个类别(category)的概念,来设置类别下所有的logger。category类似于Java的package,效果和Logger的名字等价。
三.Appender
- Log4j日志系统允许把日志输出到不同的地方,如控制台(Console)、文件(Files)、根据天数或者文件大小产生新的文件、以流的形式发送到其它地方等等。
Log4j内置了常用的输出地,一般情况下配置一下即可使用,所有的Appender都实现了自org.apache.log4j.Appender接口。在log4j.properties中,Appended都使用log4j.appender.*配置。 - 常用的输出位置有如下几个:
ConsoleAppender(控制台)
FileAppender(文件)
RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
DailyRollingFileAppender(每天产生一个日志文件)
JDBCAppender(输出到JDBC数据库)
SocketAppender(远程日至服务器)
WriterAppender(将日志信息以流格式发送到任意指定的地方)
SMTPAppender(发送邮件)
四.Layout
Appender必须使用一个与之相关联的Layout,这样才能知道怎样格式化输出日志信息。
日志格式化器Layout负责格式化日志信息,方法log.error()的参数只包含日志信息,利用Layout可以附加其他信息,以输出更多的信息或者布局显示。
- Log4j具有几种类型的Layout
PatternLayout:根据指定的转换模式格式化日志输出
HTMLLayout:格式化日志输出为HTML表格
XMLLayout:格式化日志输出为XML文件
SimpleLayout:以一种非常简单的方式格式化日志输出
TTCCLayout:包含日志产生的时间、线程、类别等信息
- 日志(二)从Log4j的配置文件说起
- Java Web - 日志-log4j(二)--配置文件说明
- 从Tomcat服务器的日志说起
- 从linux内核启动说起(二)
- Log4j(二)----配置文件篇
- (二)从JSP说起
- log4j加载自定义的日志的配置文件
- Log4j日志的使用及配置文件(lp)
- Log4j日志的使用及配置文件(lp)
- 日志的配置文件配置方法-log4j
- DevOps实施:从敏捷文化与配置文件的困惑说起
- log4j日志配置文件log4j.properties
- log4j日志配置文件
- Log4j日志配置文件
- log4j日志配置文件详解
- SpringMVC源码分析(一)从配置文件说起
- 日志(一)从Maven依赖文件说起
- Log4J日志组件的实例应用(二)
- 解开连线
- 表单标签
- 数据库 -- 关系数据库
- 读取配置信息方式
- HTML-课堂笔记
- 日志(二)从Log4j的配置文件说起
- python实现FTP服务器
- linux ulimit
- JDBC之事务、批量处理
- 内存篇
- Unity3d请求webservice
- #从神童到大师——丁俊晖的成长之路
- 二分查找法
- 在Windows xp下搭建完美Python开发环境使用Eclipse和PyDev