其源码在log4j-1.2.17.jar包内,
一、log4j的日志工作机制原理大概是:
1、加载配置
(1)log4j没有默认的打印输出配置,如果没有配置则提示找不到配置。
(2)log4j在启动的时候,可以通过代码的new配置对象方法来加载配置,也可以通过配置文件的方法来加载,手动指定配置文件:PropertyConfigurator.configureAndWatch("log4j.properties");
(默认在classpath(user.dir)路径下加载配置文件log4j.properties)。
(3)启动时log4j会开启一个线程,默认60秒循环检查配置文件的改动,若改动则重新加载配置文件。
(4)log4j加载配置文件,形成properties对象,再通过匹配其属性名把配置内容一一设置到java对象中。
2、各个类的作用
(1)org.apache.log4j.PatternLayout
属于Layout多个子类中的一个,用于格式化日志,比如new PatternLayout("%m%n")
%m输出内容,%n输出换行符。
(2)org.apache.log4j.ConsoleAppender
属于Appender多个实现类中的一个,专门用于输出日志到控制台,它可以套用一种输出格式Layoutnew ConsoleAppender(new PatternLayout("%m%n"))
(3)可以把多个不同的Appender添加到Logger:Logger.getRootLogger().addAppender(consoleAppender)
3、日志输出过程机制
(1)Logger进行日志输出时,先把日志信息封装成LoggingEvent对象,再把event对象传递进去给各个Appender进行输出。
(2)比如logger.log(“msg”),会先查找logger自己的所有Appender进行打印日志,然后传递给logger的父Logger的所有Appender进行打印,直到最顶端的rootLogger为止。
(3)日志输出分几个等级LevelALL、TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF
,比如设置了WARN等级,那么比它低的INFO等这些等级都不会打印输出。
(4)如果logger没有设置Level,那么使用其父Logger的Level,形成依赖链。
(5)输出到每个Appender,都会先校验日志的输出级别是否符合自己的Level。
4、org.apache.log4j.DailyRollingFileAppender
的机制
DailyRollingFileAppender是FileAppender的子类,它除了有FileApp
Java日志(二):log4j(apache 的 log for java)
最新推荐文章于 2024-07-22 20:25:53 发布
本文详细介绍了Java日志库log4j的工作机制,包括加载配置、日志输出过程和不同类的作用。log4j启动时会加载配置文件,并检查配置变化,采用布局和追加器实现日志格式化和输出。日志输出分为多个等级,通过Logger和Appender协同工作,确保日志按需记录。DailyRollingFileAppender能按时间分割日志文件。此外,文章还简要提及了log4j.properties配置文件的配置项及其效果。
摘要由CSDN通过智能技术生成