log4j 父logger和子logger的理解和使用

在本次使用log4j进行自定义日志打印时出现诸多问题!

由于是在开发环境内网进行的总结,所以无法将源码拿出来,最主要的是本人比较懒,所以采用这种方式进行总结!有机会再做完整更新!

第一部分:

Appender 为日志输出目的地,Log4j提供的appender有以下几种:

 org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

Layout:日志输出格式,Log4j提供的layout有以下几种:

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

 打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息

1、%c 输出日志信息所属的类的全名
2、%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
3、%f 输出日志信息所属的类的类名
4、%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
5、%m 输出代码中指定的信息,如log(message)中的message
6、%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
7、%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
8、%r 输出自应用启动到输出该日志信息所耗费的毫秒数
9、%t 输出产生该日志事件的线程名
10、%5p [%t] (%F:%L) - %m%n 就表示
宽度是5的优先等级 线程名称 (文件名:行号) - 信息 回车换行

第二部分:关于类中打印的日志规范问题,怎么使某些类或者某个类使用我们自定义的打印规范呢?

 1.某些类打印的方式:

注意图中画红色框的路径,这个路径里的类是需要按照我们定义的Pattern来打印的,所以我做了包的限制,这样可以使这些类既按照自定义打印规范打印日志,又可以不影响项目其他的类的打印规范。

2.某个类打印的方式:

根据1中我们可以知道定义了路径之后,该路径下的类在打印日志的时候会使用日志规范,那么如果我们想要打印的类不在定义的路径范围内,而我们又不想定义多个打印规范或者是不想定义多个路径怎么办呢?

这时候可以在想要打印的类中这样定义:如下图,共两种方式

第一种:

比如该类不在路径范围内,那么我们可以把定义好的路径放在getLogger()方法内,就可以实现使该类打印的目标了,如下图getLogger()方法内的字符就是定义的路径;

 第二种:

比如该类不在路径范围内,那么我们可以把定义好的路径范围内的类的.class放在getLogger()方法内,就可以实现使该类打印的目标了,如下图getLogger()方法内的.class类就是定义路径里的类;

后续补充其它内容!

猜你喜欢

转载自blog.csdn.net/weixin_44740328/article/details/127492526