Log4j的好处——同SystemOutPrintIn的比较

Log4j的定义

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码

System.Out.PrintIn的定义

输出字符串。System是java.lang里面的一个类
,而out就是System里面的一个数据成员(也称为字段),但这个成员不是基本类,而是java.io.PrintStream类的对象,我们先看看下面的截图,被关键字static修饰的数据成员或方法可以直接通过“类名.数据成员”或“类名.方法”来引用,而无须先建立对象。所以System.out是应用了out这个静态数据成员。而out又是一个java.io.PrintStream类的对象,所以out必然可以调用java.io.PrintStream类里面的方法,println()就是java.io.PrintStream类里的一个方法,它的作用就是用来想控制台输出信息的。

代码实例比较

System.Out.PrintIn

不知道这句话是在哪个类,哪个线程里出来的

不知道什么时候前后两句输出间隔了多少时间

无法关闭调试信息,一旦System.out.println多了之后,到处都是输出,增加定位自己需要信息的难度�等等


Log4j的好处——同SystemOutPrintIn的比较_第1张图片
1

光秃秃的输出信息

Log4j

知道是哪个类的日志

知道是哪个线程的日志

日志级别可以观察TRACE DEBUG INFO WARN ERROR FATAL

知道时间间隔


Log4j的好处——同SystemOutPrintIn的比较_第2张图片
2

Log4j配置

log4j.properties


设置输出格式

设置输出文件

log4j.rootLogger=DEBUG,Console,Stdout//输出地方,控制台,输出信息登记DEBUG

#Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender

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

log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n//输出格式

log4j.logger.java.sql.ResultSet=INFO

log4j.logger.org.apache=INFO

log4j.logger.java.sql.Connection=DEBUG

log4j.logger.java.sql.Statement=DEBUG

log4j.logger.java.sql.PreparedStatement=DEBUG

log4j.appender.Stdout = org.apache.log4j.DailyRollingFileAppender

log4j.appender.Stdout.File = C://logs/log.log //输出文件存储路径

log4j.appender.Stdout.Append = true

log4j.appender.Stdout.Threshold = DEBUG

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

log4j.appender.Stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

格式解释

log4j日志输出格式一览:

%c 输出日志信息所属的类的全名

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28

%f 输出日志信息所属的类的类名

%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行

%m 输出代码中指定的信息,如log(message)中的message

%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推

%r 输出自应用启动到输出该日志信息所耗费的毫秒数

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

所以:

%5p [%t] (%F:%L) - %m%n 就表示

宽度是5的优先等级 线程名称 (文件名:行号) - 信息 回车换行

PPT:PPT

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

IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !http://www.jnshu.com/login/1/11605661

你可能感兴趣的:(Log4j的好处——同SystemOutPrintIn的比较)