一.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
相关推荐
这个模块的强大之处在于,Node.js自身就能够处理网络通信,无需依赖其他服务器软件,如Apache、Nginx或IIS。 一、HTTP服务器 1. 创建HTTP服务器:Node.js中的`http.createServer()`方法是构建HTTP服务器的基础。它...
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
Unity3d 3D模型描边代码 懒人直接上代码
原文链接:https://alading.blog.csdn.net/article/details/141710476 包含功能: 经理管理:负责经理信息维护与权限分配,确保管理层操作的安全性和高效性。 员工管理:管理员工信息,包括招聘、离职、考勤及权限设置,优化人力资源配置。 商品分类管理:对商品进行科学分类,便于商品检索与管理,提升顾客购物体验。 商品信息管理:维护商品详细信息,如名称、价格、描述等,确保信息准确无误。 商品入库管理:监控商品入库流程,记录库存变化,实现库存精准管理。 商品销售管理:处理销售事务,包括销售记录、退货处理,支持销售业绩分析。 缺货提醒管理:自动检测库存水平,及时发出缺货警告,保障商品供应连续性。 商品收银管理:处理交易结算,支持多种支付方式,确保收银过程快速准确。 供应商管理:维护供应商信息,评估合作效果,优化供应链,保证商品质量与供应稳定性。
MATLAB实现工业PCB电路板缺陷识别和检测【图像处理实战】项目详情请参见:https://handsome-man.blog.csdn.net/article/details/130493170 PCB板检测的大概流程如下:首先存储一个标准PCB板图像作为良好板材的参考标准,然后将待检测的PCB板图像进行处理,比较与标准PCB图像的差异,根据差异的情况来判断缺陷类型。 项目代码可顺利编译运行~
Jupyter-Notebook
1991-2021年中国科技统计年鉴-最新数据发布.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
BMI270 驱动开发程序
Jupyter-Notebook
Jupyter-Notebook
Jupyter-Notebook
上市公司基本资料及行业分类(2020)+员工构成数据大全(2006-2020)-最新发布.zip
安慰剂检验代码与数据文章-最新研究成果.zip
原文链接:https://alading.blog.csdn.net/article/details/141678636 包含功能: 用户管理:负责系统用户的注册、登录、权限分配及个人信息管理。 供应商管理:维护供应商信息,包括添加、编辑、删除供应商资料及合作状态。 商品分类管理:创建、修改和删除商品分类,便于商品归类与查找。 商品信息管理:管理商品详情,如添加新品、编辑商品属性、价格及库存量。 采购入库管理:记录采购订单详情,处理入库操作,更新库存数量。 销售信息管理:记录销售订单,追踪销售数据,支持销售分析与报表生成。 赠品入库管理:管理赠品入库流程,记录赠品信息,关联促销活动。 退货入库管理:处理客户退货,记录退货详情,恢复库存数量。 其他入库管理:管理非采购、非赠品的入库情况,如调拨入库等。 购买订单管理:跟踪客户购买订单状态,从下单到发货的全流程管理。 赠送信息管理:管理赠品发放规则,记录赠送活动执行情况。 盘点信息管理:定期进行库存盘点,记录盘点结果,调整库存差异。
演示:https://blog.csdn.net/m0_54925305/article/details/143660348?spm=1001.2014.3001.5501
Jupyter-Notebook
shiahdifhiahfiqefiwhfi weifwijfiwqufiqweefijeq0jfe
用java实现了全部23种设计模式,代码简单易懂,注释详细,仅作学习使用——hrh。