一.Apache Log4j
- http://logging.apache.org/log4j/2.x/
- 本文只讲初始化Logger的过程。
二.Apache Log4j里的几个核心类
- Logger:日志类。getLogger()交给LogManager去实现。
- Level:八个级别。 #OFF,FATAL,ERROR,WARN,INFO,DEBUG,TRACE,ALL。
- LogManager:Use the LogManager class to retreive Logger instances or to operate on the current
LoggerRepository。 - RepositorySelector:该接口只有一个方法LoggerRepository getLoggerRepository()。LogManager有一个RepositorySelector对象。
- LoggerRepository:创建和管理Logger。
- Hierarchy:实现LoggerRepository, RendererSupport,是最重要的一个数据结构,维护着整个日志树。调用LoggerFactory产生Logger。
- LoggerFactory:该接口只有一个方法 Logger makeNewLoggerInstance(String name)。DefaultCategoryFactory实现这个接口,最终就是这里new Logger(name)。
- ObjectRenderer:该接口只有一个方法String doRender(Object o)。Log4J中,对传入的message实例,如果是非String类型,会先使用注册的ObjectRender(在LogRepository中查找注册的ObjectRender信息)处理成String后返回,若没有找到相应的ObjectRender,则使用默认的ObjectRender,它只是调用该消息实例的toString()方法。比喻log4j.porperties里的log4j.renderer.com.jyz.study.jdk.logger.User=com.jyz.study.jdk.logger.UserRenderer,UserRenderer就是一个ObjectRender。但是这个东西实际开发中很少用到。
-
Appender:该接口定义了日志的输出方式,如经常用的两个Appender
#输出到控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender #输出到DailyRolling文件 log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
三.Logger初始化
Logger logger = Logger.getLogger(Log4jTest.class)将发生以下事情。
LogManager静态代码块里:
- 以DEBUG等级创建一个RootLogger,然后以RootLogger为参数创建一个Hierarchy类的实例。
- 以Hierarchy为参数创建一个DefaultRepositorySelector类的实例,就是我们上面说的“LogManager有一个RepositorySelector对象。”
- 读取配置文件。
正式进入LogManager.getLogger(name)
-
静态代码块完后LogManager.getLogger(name)由getLoggerRepository().getLogger(name)去实现。
- getLoggerRepository()会调用上面的DefaultRepositorySelector.getLoggerRepository(),也就是Hierarchy。
- Hierarchy.getLogger(name)最终由LoggerFactory.makeNewLoggerInstance(name)实现。
单独说一下配置文件的读取,最终会进入PropertyConfigurator的doConfigure(Properties properties, LoggerRepository hierarchy)方法。
- 解析log4j.reset,看hierarchy是否需要重置。
- 解析log4j.threshold。Threshold是个全局的过滤器,它将把低于所设置的level的信息过滤不显示出来。
- 解析log4j.rootCategory。设置日志级别和初始化所有appender。
- 解析og4j.loggerFactory。可以自定义lLoggerFactory类,要实现LoggerFactory接口。
- 解析log4j.category. log4j.logger. log4j.renderer.。前两者有什么区别?
#指定com.neusoft包下的所有类的等级为DEBUG,对不同的类输出不同的文件 log4j.logger.org.apache.commons=ERROR test1appender #指定com.jyz包下的所有类的等级为INFO,对不同的类输出不同的文件 log4j.category.com.jyz=INFO test1appender #指定日志输出User对象,使用UserRenderer log4j.renderer.com.jyz.study.jdk.logger.User=com.jyz.study.jdk.logger.UserRenderer
相关推荐
标签:apache、extras、log4j、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译...
apache-log4j-2.0-rc1-src,开发工程进行用log4j进行日志记录,log4j-2.0的源码
源码包 log4j 2.11.0 学习专业
Apache Log4j 2 源代码( apache-log4j-2.17.1-src.zip) 是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了重大改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。修复了安全漏洞...
标签:apache、logging、log4j、api、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译...
apache log4j 日志系统实现原理.doc,Apache Log4j 学习笔记 Apache Logging Project Homepage: http://logging.apache.org
Apache Log4j 2 (apache-log4j-2.17.1-bin.zip)是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了重大改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。修复了安全漏洞 CVE-...
Apache Log4j 2.0 发布第 4 个 Beta 版本,包括的新特性有: o Added Log4j 2 to SLF4J adapter. o LOG4J2-131: Add SMTPAppender. Thanks to Scott Severtson. o Added hostName and contextName to property ...
Apache Log4j2 远程代码执行漏洞检测工具,包含windows版和linux版。图形化 Apache Log4j2检测工具
Apache Log4j2紧急缓解措施
标签:apache、logging、log4j、jul、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
标签:apache、logging、log4j、core、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译...
Apache Log4j_1.2.17 完整依赖包,在jdk1.8.201中测试通过。使用教程https://www.tutorialspoint.com/springmvc/springmvc_log4j.htm
标签:apache、logging、api、log4j、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译...
标签:apache、logging、log4j、slf4j、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
标签:apache、logging、log4j、slf4j、impl、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...
标签:apache、logging、log4j、slf4j、impl、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和...
Log4j 是一个日志记录框架,Log4j 2 是对 Log4j 的升级,提供了重大改进,超越其前身 Log4j 1.x,并提供许多其它现代功能 ,例如对标记的支持、使用查找的属性替换、lambda 表达式与日志记录时无垃圾等。 Apache ...
Apache Log4j 2 源代码( apache-log4j-2.17.1-src.tar.gz) 是对 Log4j 的升级,它比其前身 Log4j 1.x 提供了重大改进,并提供了 Logback 中可用的许多改进,同时修复了 Logback 架构中的一些固有问题。修复了安全...
log4j:Apache log4j的镜像