Log4j介绍与使用
Log4j三大组件
1) 日志记录器Logger
负责输出日志信息,并能够对日志信息进行分类筛选,决定哪些日志信息应该被输出,哪些该被忽略。Loggers组件输出日志信息时分为5个级别:DEBUG、INFO、WARN、ERROR、FATAL。这五个级别的顺序是:DEBUG<INFO<WARN<ERROR<FATAL。如果设置某个Logger组件的级别是P,则只有级别等于或高于P的日志信息才能输出。Logger有继承关系,最上层是rootLogger,定义的其他Logger都会继承rootLogger2) 输出配置Appender
定义日志输出目的地,输出的目的地可以是控制台、文件或网络设备3) 格式化器Layout
通过在Appender的后面附加Layout来实现日志格式化输出一个Logger可以包含多个Appender,每个Appender对应一个Layout
通过在项目中创建 log4j.properties 文件来配置log4j,项目启动时会自动检索项目内全部文件找到该配置文件
Logger
Logger的定义格式:
log4j.rootLogger=level,appenderName,appenderName,...
log4j.logger.packageName=level,appenderName,appenderName,...level是日志的输出最低级别
appenderName是日志信息的输出目的地,可以同时定义多个输出目的地
packageName是对单个包路径下的全部类配置单独的日志输出目的地
Appender
Appender的定义格式:
log4j.appender.appenderName=fully.qualified.name.of.appender.class
其中 fully.qualified.name.of.appender.class 可以指定如下五种之一:org.apache.log4j.ConsoleAppender
将日志输出到控制台,选项:
1)Threshold=WARN:指定日志消息的输出最低级别
2)ImmediateFlush=true:默认为true,意味着所有的消息都会立即输出
3)Target=System.err:默认为System.out,指定输出控制台org.apache.log4j.FileAppender
将日志输出到文件,选项:
1)Threshold=WARN:指定日志消息的输出最低级别
2)ImmediateFlush=true:默认为true,意味着所有的消息都会立即输出
3)File=logFile.log:指定消息输出到logFile.log文件
4)Append=false:默认为true,即将消息追加到指定文件,false将消息覆盖指定的文件org.apache.log4j.DailyRollingFileAppender
每天产生一个日志文件,选项:
1)Threshold=WARN:指定日志消息的输出最低级别
2)ImmediateFlush=true:默认值是true,意味着所有的消息都会立即输出
3)File=logFile.log:指定消息输出到logFile.log文件
4)Append=false:默认值是true<即将消息追加到指定文件,false将消息覆盖指定的文件
5)DatePattern='.'yyyy-MM-dd:每天产生一个新文件,还可以指定其他方式:
'.'yyyy-MM: 每月
'.'yyyy-ww: 每周
'.'yyyy-MM-dd: 每天
'.'yyyy-MM-dd-a: 每天两次
'.'yyyy-MM-dd-HH: 每小时
'.'yyyy-MM-dd-HH-mm: 每分钟org.apache.log4j.RollingFileAppender
文件大小到达指定尺寸时产生一个新的文件,选项:
1)Threshold=WARN:指定日志消息的输出最低级别
2)ImmediateFlush=true:默认值是true,意味着所有的消息都会被立即输出
3)File=logFile.log:指定消息输出到logFile.log文件
4)Append=false:默认值是true,即将消息追加到指定文件中,false指将消息覆盖指定的文件
5)MaxFileSize=100KB: 后缀可为KB、MB、GB,在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logFile.log.1文件
6)MaxBackupIndex=2:指定可产生的滚动文件的最大数量org.apache.log4j.WriterAppender
将日志信息以流格式发送到任意指定的地方
Layout
Layout的定义格式:
第一部分:
log4j.appender.appenderName.layout=fully.qualified.name.of.layout.class
其中 fully.qualified.name.of.layout.class 可以指定如下4种之一:org.apache.log4j.HTMLLayout
以HTML表格形式布局,选项:
1)LocationInfo=true:输出java文件名称和行号,默认为false
2)Title=my app file: 默认值是 Log4J Log Messagesorg.apache.log4j.PatternLayout
可以灵活地指定布局模式,选项:
1)ConversionPattern=%m%n :指定消息格式化方式org.apache.log4j.SimpleLayout
包含日志信息的级别和信息字符串,选项:
1)LocationInfo=true:输出java文件和行号,默认为falseorg.apache.log4j.TTCCLayout
包含日志产生的时间、线程、类别等等信息
第二部分:
log4j.appender.appenderName.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ss.SSS} %c %m%n每个符号含义:
1) -X: 输出时左对齐
2) %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL
3) %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,
例如:%d{yyyy-MM-dd HH:mm:ss.SSS},输出:2010-10-10 22:10:28.921
4) %r: 输出自应用启动到输出该log信息耗费的毫秒数
5) %c: 输出日志信息所属的类目,通常就是所在类的全名
6) %t: 输出产生该日志事件的线程名
7) %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数,
例如:Testlog4.main(TestLog4.java:10)
8) %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中
9) %%: 输出一个"%"字符
10)%F: 输出日志消息产生时所在的文件名称
11)%L: 输出代码中的行号
12)%m: 输出代码中指定的消息,产生的日志具体信息
13)%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式如:
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉
相对路径和系统变量
相对路径例子:
log4j.appender.A1.File=./Sample.log
其中.号表示项目根目录使用 ${APP_HOME_PATH} 的方式来使用系统变量设置日志输出路径,例如:
#设定系统变量:
System.setProperty("LOG_PATH", "D:/");#可以在log4j中使用该变量来确定输出路径
log4j.appender.A1.File=${LOG_PATH}/Sample.log其中当使用tomcat服务器时,tomcat启动时自带系统变量:${catalina.home},可以直接在log4j配置文件中使用
实例
#定义3个输出目的地
log4j.rootLogger=INFO,A1,A2,A3 #定义A1输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%4p [%t] (%F:%L) - %m%n #定义A2输出到文件
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.File=./Sample.log
log4j.appender.A2.MaxFileSize = 1KB
log4j.appender.A2.MaxBackupIndex = 3
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n #定义A3输出到数据库
log4j.appender.A3=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.A3.URL=jdbc:mysql://localhost:3306/dbName
log4j.appender.A3.driver=com.mysql.jdbc.Driver
log4j.appender.A3.user=root
log4j.appender.A3.password=root
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
#定义A3的写数据库执行的SQL语句
log4j.appender.A3.layout.ConversionPattern=INSERT INTO log4j(createDate,thread,level,class,message) values(\'%d\',\'%t\',\'%-5p\',\'%c\',\'%m\')写到数据库时需要先创建好表:
create table log4j
(
logId int not null auto_increment,--流水号
createDate varchar(45) default null,--日志生成时间
thread varchar(45) default null,--当前线程
level varchar(45) default null,--当前日志的级别
class varchar(45) default null,--生成日志的类
message varchar(245) default null,--日志具体信息 primary key(logId)
)对不同的包设置不同的日志输出方式:
#定义默认为输出到控制台
log4j.rootLogger=INFO,default
log4j.appender.default=org.apache.log4j.ConsoleAppender
log4j.appender.default.layout=org.apache.log4j.PatternLayout
log4j.appender.default.layout.ConversionPattern=%4p [%t] (%F:%L) - %m%n
#定义com.code包下的类的日志都输出到文件
log4j.logger.com.code=WARN
log4j.appender.com.code=org.apache.log4j.RollingFileAppender
log4j.appender.com.code.File=./Sample.log
log4j.appender.com.code.MaxFileSize = 1KB
log4j.appender.com.code.MaxBackupIndex = 3
log4j.appender.com.code.layout=org.apache.log4j.PatternLayout
log4j.appender.com.code.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n
Log4j介绍与使用的更多相关文章
- log4j介绍以及使用教程
一.介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接 口服务 器.NT的事件记录器.UNIX Syslog ...
- Java框架spring 学习笔记(十三):log4j介绍
功能 日志功能,通过log4j可以看到程序运行过程的详细信息. 使用 导入log4j的jar包 复制log4j的配置文件,复制到src下面 3.设置日志级别 info:看到基本信息 debug:看 ...
- log4j介绍
log4j.properties文件的三种加载方式 1.默认自动加载 满足以下条件时: 1).配置文件名为log4j.properties 2).在classpath根目录下(即resources根目 ...
- log4j介绍和使用
1.apache推出的开源免费日志处理的类库 2.为什么需要日志?? 2.1 在项目中编写system.out.println();输出到控制台,当项目发布到tomcat后,没有控制台(在命令界面能看 ...
- Log4j介绍,log4j.properties配置详解
http://www.cnblogs.com/simle/archive/2011/09/29/2195341.html本文主要解释log4j的配置文件各个配置项的含义,内容是从网上转载的 1.Log ...
- commons-logging和log4j
1.Apache通用日志接口(commons-logging.jar)介绍 Apache Commons包中的一个,包含了日志功能,必须使用的jar包.这个包本身包含了一个Simple Logger, ...
- log4j总结
log4j介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Sysl ...
- log4j个人使用整理
Log4j介绍: 略过. 配置: Eclipse项目中添加log4j.jar到lib下. 在bin目录下新建log4j.properties,编辑好log4j配置文件. 样例分析: log4j.roo ...
- commons-logging log4j的联系区别
1.Apache通用日志接口(commons-logging.jar)介绍 Apache Commons包中的一个,包含了日志功能,必须使用的jar包.这个包本身包含了一个Simple Logger, ...
随机推荐
- css清浮动与动态计算元素宽度
css常用清浮动写法 /*清除浮动*/| .clears:after{ display: block; content: ''; clear: both; height: ; visibility: ...
- (57)Wangdao.com第九天_JavaScript 对象的简介及分类
对象 引用数据类型. 对象是一种复合的数据类型,可以存储多个不同类型的变量. 以后我们看到的,只要不是String.Number.Boolean.Null.Undefined,那么就一定是 Objec ...
- winform 利用Http向服务器上传与下载文件
利用在服务器端的IIS,布置“请求处理映射”.从而处理,本地发出Post请求.Url指向web网站所在路径的请求映射.由映射代码实现服务器保存文件. winform里面使用,WebClient的对象, ...
- 20175324 《Java程序设计》第3周学习总结
# 学号 20175324 <Java程序设计>第3周学习总结 ## 教材学习内容总结 在蓝墨云中的教程里学习了如何安装IDEA,并且尝试了自己破解IDEA,主要在看书时,对java中的类 ...
- javascript的数组之reduce()
reduce()方法对累加器和数组中的每个元素(从左到右)应用到一个函数中,最终得到一个值并返回 const array1 = [1, 2, 3, 4]; const reducer = (accum ...
- 19.3.20 解决pycharm快捷键无法使用问题和熟悉git与码云操作流程
problem:由于Vim插件导致快捷键无法使用: answer:settings→Plugins→搜索到ideaVim→取消选中→apply→重启pycharm: git:创建仓库→生成公钥(ssh ...
- Selenium 3----窗口截图+关闭浏览器
窗口截图 get_screenshot_as_file() 自动化用例是由程序执行的,因此有时候打印的错误信息并不十分明确.如果在脚本执行出错的时候能对当前窗口截图保存,那么通过图片就可以非常直观地看 ...
- WPF DataGrid分页功能实现代码
在Silverlight中DataGrid分页可以结合DataPager控件很容易实现,但是在WPF中没有类似的,需要手动实现这样一个控件: 1.创建一个UserControl,DP.xaml,代码如 ...
- Random类 一般跟生成随机数有关
public class MyRandom extends Random{ public static void main(String[] args) { // 随机数,生产随机数 // java提 ...
- 在队列中join()与task_done()的关联性
1.基础解释: Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号 Queue.join() 实际上意味着等到队列为空,再执 ...