log4j编写日志 简单入门(基本足够开发中使用)



编写日志两个目的:开发阶段进行调试、上线阶段追踪系统bug ------ 一般占用代码量的4%


日志技术和传统system.out有什么区别?

日志分为若干等级,可以控制信息是否向日志文件输出


log4j Apache 提供开源日志技术,将日志分成若干级别 进行控制,技术成为通用日志技术,接口已经大多数语句实现 PHP、c++、.net
1.2 1.3 2.0  ----- 1.2属于最稳定版本
官方网站:http://logging.apache.org/log4j


使用Log4j
1. 加载jar包
2. 编写配置文件
3. 使用Log4j的日志级别输入日志信息


log4j 日志级别有6种:
fatal致命错误 error不可修复的错误
error 运行时异常
warn 警告信息
info 有意义的信息,通常与业务操作相关信息 例如:用户登陆成功、商品购买成功
debug 调试信息 例如:执行main的doGet方法、创建了变量int n = 10
trace 堆栈信息,比debug更细节调试信息 
级别由高到低 fatal error warn info debug trace   ALL OFF


* 输出信息时,可以设置日志级别 , 日志信息只会输出与设置级别相同的或者高于设置级别的日志信息


BasicConfigurator.configure(); 使用此方法后不需要写配置文件
PropertyConfigurator.configure(filePath); 加载一个指定配置文件
* log4j配置文件两种格式,XML和Properties  ------ 主要 properties
#Loggers 日志记录器 控制日志级别,输出目的地
#Appenders 输出源 指定日志向哪里输出 
#layout 布局 指定日志格式


rootLogger 默认记录器 格式 = 日志级别,输出源1, 输出源2,输出源3 ....
log4j.appender.A1= 定义了一个输出源 名字是A1
log4j.appender.A1.layout = 指定输出源的布局
log4j.appender.A1.layout.ConversionPattern= 指定布局的格式


------------------------------------------------------------------------------------------
配置log4j 
1、指定日志记录器 = 日志级别,输出源

2、定义输出源 log4j.appender.输出源名字 = xxx 

官方提供的输出源:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender  (每天产生一个日志文件)
org.apache.log4j.RollingFileAppender  (文件到达指定大小时产生一个新文件)
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任何地方) 


3、定义输出源的日志布局类型 log4j.appender.输出源名字.layout = xxx

             官方提供的layout

org.apache.log4j.HTMLLayout  (以HTML表格形式布局)
org.apache.log4j.PatternLayout  (可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout  (包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)

4、如果你使用了PatternLayout 定义布局格式 log4j.appender.输出源名字.layout.ConversionPattern = XXX

       



编程中使用log4j的步骤:
先写 static Logger log = Logger.getLogger(类名.class);
然后通过log根据6个级别输出日志 
* 目前fatal和trace基本上不用,常用级别四个 error warn info debug


*log4j的默认配置文件 log4j.properties ,如果将该文件放入src下,就无需编写PropertyConfigurator.configure(args[0]); 手动加载配置文件了


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


# 应用于控制台配置示例
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=

  [framework]%d - %c -%-4r [%t] %-5p %c %x - %m%n


#应用于文件配置示例

log4j.appender.FILE=org.apache.log4j.FileAppender

log4j.appender.FILE.File=file.log 

log4j.appender.FILE.Append=false

log4j.appender.FILE.layout=org.apache.log4j.PatternLayout

log4j.appender.FILE.layout.ConversionPattern=

  [framework]%d - %c -%-4r [%t] %-5p %c %x - %m%n
























附:格式参数说明

 

参数

说明

例子

%c

列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间

log4j配置文件参数举例

输出显示媒介

假设当前logger名字空间是“a.b.c”

%c

a.b.c

%c{2}

b.c

%20c

(若名字空间长度小于20,则左边用空格填充)

%-20c

(若名字空间长度小于20,则右边用空格填充)

%.30c

(若名字空间长度超过30,截去多余字符)

%20.30c

(若名字空间长度小于20,则左边用空格填充;若名字空间长度超过30,截去多余字符)

%-20.30c

(若名字空间长度小于20,则右边用空格填充;若名字空间长度超过30,截去多余字符)

%C

列出调用logger的类的全名(包含包路径)

假设当前类是“org.apache.xyz.SomeClass”

%C

org.apache.xyz.SomeClass

%C{1}

SomeClass

%d

显示日志记录时间,{<日期格式>}使用ISO8601定义的日期格式

%d{yyyy/MM/dd HH:mm:ss,SSS}

2005/10/12 22:23:30,117

%d{ABSOLUTE}

22:23:30,117

%d{DATE}

12 Oct 2005 22:23:30,117

%d{ISO8601}

2005-10-12 22:23:30,117

%F

显示调用logger的源文件名

%F

MyClass.java

%l

输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数

%l

MyClass.main(MyClass.java:129)

%L

显示调用logger的代码行

%L

129

%m

显示输出消息

%m

This is a message for debug.

%M

显示调用logger的方法名

%M

main

%n

当前平台下的换行符

%n

Windows平台下表示rn
UNIX平台下表示n

%p

显示该条日志的优先级

%p

INFO

%r

显示从程序启动时到记录该条日志时已经经过的毫秒数

%r

1215

%t

输出产生该日志事件的线程名

%t

MyClass

%x

按NDC(Nested Diagnostic Context,线程堆栈)顺序输出日志

假设某程序调用顺序是MyApp调用com.foo.Bar

%c %x - %m%n

MyApp - Call com.foo.Bar.
com.foo.Bar - Log in Bar
MyApp - Return to MyApp.

%X

按MDC(Mapped Diagnostic Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。

%X{5}

(记录代号为5的客户端的日志)

%%

显示一个百分号

%%

%        

 

 













































  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值