`
bit1129
  • 浏览: 1068085 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Log4j一】Log4j总体介绍

 
阅读更多

Log4j组件:Logger、Appender、Layout

 

Log4j核心包含三个组件:logger、appender和layout。这三个组件协作提供日志功能:

  • 日志的输出目标
  • 日志的输出格式
  • 日志的输出级别(是否抑制日志的输出)

 logger继承特性

A logger is said to be an ancestor of another logger if its name followed by a dot is a prefix of the descendant logger name. A logger is said to be a parent of a child logger if there are no ancestors between itself and the descendant logger。For example, the logger named "com.foo" is a parent of the logger named "com.foo.Bar". Similarly, "java" is a parent of "java.util" and an ancestor of "java.util.Vector". This naming scheme should be familiar to most developers

 

Logger日志级别

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL

 

1. 上面的六个日志级别,从上到下级别逐次提高。A logging request(即调用logger的日志输出方法debug,info,war,error等) is said to be enabled if its level is higher than or equal to the level of its logger. Otherwise, the request is said to be disabled. A logger without an assigned level will inherit one from the hierarchy.

2. 假如c是logger对象,并且c的日志级别设置为INFO,那么只有c.info..c.fatal的日志调用才会真正的将日志打印到相应的目标上,c.debug则会抑制日志的输出

2. 一个logger最多指定一个级别

 

日志级别继承特性

The inherited level for a given logger C, is equal to the first non-null level in the logger hierarchy, starting at C and proceeding upwards in the hierarchy towards the root logger.

如果root logger的日志级别进行了设置,那么所有的logger,都会有不为空的日志级别。实际项目开发中,应该为root logger指定一个默认的日志级别。那面的两个表格是两个日志级别继承的例子:

Logger
name Assigned
level Inherited
level
root Proot Proot
X Px Px
X.Y none Px
X.Y.Z Pxyz Pxyz

 

Logger
name Assigned
level Inherited
level
root Proot Proot
X Px Px
X.Y none Px
X.Y.Z Pxyz Pxyz

 

 

Appender、Layout

在Log4j中,日志输出目标称之为Appender。一个logger可以打印到多个目标,也就是说一个logger可以配置多个appender。Log4j内置了如下几种Appender:

  • DailyRollingFileAppender    按日期滚动文件
  • RollingFileAppender 按文件大小滚动文件
  • ConsoleAppender   打印到控制台
  • JDBCAppender       将日志打印到数据库中
  • JMSAppender         将日志打印到JMS中
  • SocketAppender     将日志打印到log服务器(LogEvent对象序列化到日志服务器)
  • ...

每个appender因为目标介质的不同以及方式的不同,每个类都有特定的一些属性(用于配置)

 

 

Appender Additivity(logger绑定多个appender的策略)

1. Each enabled logging request for a given logger will be forwarded to all the appenders in that logger as well as the appenders higher(higher here means the hierarchy relationship of logger) in the hierarchy. In other words, appenders are inherited additively from the logger hierarchy. For example, if a console appender is added to the root logger, then all enabled logging requests will at least print on the console. If a file appender is also added to a logger, say C, then enabled logging requests for C and C's children will print on a file and on the console. It is possible to override this default behavior so that appender accumulation is no longer additive by setting the additivity to false.

2. Loggers have their additivity flag set to true by default.

 

Appender Additivity中断(logger绑定多个appender的策略)

 

The output of a log statement of logger C will go to all the appenders in C and  to all appenders that are defined in its ancestors. This is the meaning of the term "appender additivity".However, if an ancestor of logger C, say P, has the additivity flag set to false, then C's output will be directed to all the appenders in C and its ancestors upto and including P but not the appenders in any of the ancestors of P.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Log4j2异步写日志效率测试源码

    Log4j2是一款广泛使用的Java日志框架,它提供了丰富的日志记录功能和高度的可配置性。在大型系统中,日志记录是至关重要的,因为它可以帮助开发者追踪系统行为、定位错误以及进行性能分析。而Log4j2的一个显著特性是...

    log4j漏洞靶场docker-compose.zip

    总体而言,靶场在信息安全领域具有重要地位,为安全专业人员提供了实战演练的机会,促进了团队协作与沟通,为学习者提供了安全的学习环境,同时也是安全社区交流的重要平台。通过靶场的实践操作,安全从业者能够更好...

    log4j2-rce靶场.zip

    总体而言,靶场在信息安全领域具有重要地位,为安全专业人员提供了实战演练的机会,促进了团队协作与沟通,为学习者提供了安全的学习环境,同时也是安全社区交流的重要平台。通过靶场的实践操作,安全从业者能够更好...

    log4qt(支持qt5.7.0 可输出为dll 兼容vs2013)

    `log4qt`是针对Qt框架的一个强大日志记录库,它基于Java的log4j理念,为Qt应用程序提供了灵活且可扩展的日志处理能力。在这个版本中,`log4qt`已经更新以适应Qt 5.7.0,同时优化了与Visual Studio 2013的兼容性,...

    JBoss Development Process Guide

    - 介绍了类似的概念,但针对的是 log4j.properties 文件。 - **8.3.8 使用自己的 log4j.xml 文件——Log4j Repository Selector** - 详细说明了如何使用 Log4j Repository Selector 来指定 log4j.xml 文件的位置。...

    Advanced Algorithms Lecture Notes (MIT 6.845J)

    通过使用斐波那契堆,最短路径和最小生成树问题的总体运行时间可以降低至O(m + n log n),这对于大型图来说是一个显著的改进。 #### 五、结论 本讲座笔记通过介绍斐波那契堆的概念,展示了其在解决最短路径与最小...

    泛微E10售前技术资料 E10技术架构介绍

    Axios、PromiseLess、CSS4、Polyfill、React、Router-Dom、MobX、Apollo、MyBatis、GoLang、Dubbo、Dom4j、Redis、Protobuf、Quartz、Kafka、C++、poi、ASM、Sigar、LibreOffice、JavaLog4j、Spring Boot、Spring ...

    基于Java实现的秒杀+shiro权限+信息采集等系统的实现源码

    秒杀项目练习 :seckill 该项目总体架构: Maven + SSM 日志: slf4j + logback 数据库相关:Mysql + c3p0 权限控制项目练习:springboot-shiro ...日志模块:log4j 配置模块:单例模式,dom4j解析xml,IOC控制反转

    最新Java后台管理系统(ext-js4,Hibernate 4,Spring mvc3)

    - 日志记录:利用Log4j或类似的日志框架,记录系统运行过程中的信息,便于问题排查和系统监控。 此外,系统可能还涉及其他技术,如JDBC、MyBatis、Ajax、JSON等,以实现更复杂的功能,如数据过滤、分页、异步请求等...

    比较起泡排序与快速排序的时间复杂度.docx

    快速排序是一种高效的排序算法,它的时间复杂度为 O(n log n),其中 n 是数组的长度。该算法通过分治策略和递归实现排序。在本实验中,我们使用了以下代码实现快速排序: ```c int Partition(int r[], int first, ...

    OA项目简单介绍功能点需求分析实施过程等

    总的来说,OA项目涉及到多个技术层面,包括Web开发框架Struts+Spring+Hibernate的运用,JavaScript和JSP的开发,以及各种工具和技术如XDoclet、Ant、Dojo、Log4j、DWR、DOM4J、Pager-Taglib等的使用。通过这样的项目...

    an optimal algorithm for sink finding

    本文旨在介绍一种用于寻找汇点的最优算法,该算法能够在最坏情况下使用最少的矩阵访问次数来完成任务。 #### 二、背景与问题定义 ##### 2.1 问题起源 寻找汇点的问题最初出现在作为对早期版本的安德森-罗森伯格...

    高通模块modem_9xxx平台功耗问题调试方法总结.docx

    一、总体概述 高通模块 modem_9xxx 平台功耗问题调试方法主要包括APSS、MPSS、LPASS 等主要子系统及外设的休眠状态检测、RPM 软件休眠信号的发送、PMIC 供电的外设的休眠检测等几个方面。通过对这些方面的检测和...

    J2EE架构设计UML软件工程组织.pptx

    Log4j是Java的日志记录框架,课程中介绍了其快速入门和优势,日志管理对于调试和监控系统运行状态至关重要。 6. **Struts框架**: Struts作为MVC框架,负责处理用户请求和响应。课程讲解了ActionForm、Action以及...

    Java常用的八种排序算法与代码实现 - 我心自在 - 博客园1

    本文将详细介绍Java中常见的八种排序算法及其代码实现,帮助读者理解和掌握这些算法的原理。 1. 直接插入排序 直接插入排序是最基础的排序算法之一,它通过将每个元素插入到已排序部分的正确位置来逐步构建有序序列...

    熵权法求权重

    lnfij(i, j) = log(f(i, j)); % 计算对数值 end end end Hj = -k * (sum(f .* lnfij, 1)); % 计算信息熵 ``` 4. **计算权重**:最后一步是根据信息熵计算每个指标的权重。 ```matlab weights = (1 - Hj) / ...

    oracle j脚本

    在Linux操作系统环境下,管理和监控Oracle数据库通常涉及一系列的脚本操作。以下是一些常用的Oracle SQL脚本,用于获取关于数据库会话、等待事件、执行的SQL语句以及文件和块信息的相关知识: 1. **查询会话总体...

    SpringMVC+Nutz框架介绍.docx

    Bootstrap UI用于前端界面设计,以及一系列后台服务和技术如Spring Cache、Nutz、Jedis、Dubbo、RabbitMQ、Quartz、Elasticsearch、FastDFS、Ehcache、Beetl、Log4j等,它们共同构建了一个全面的开发环境。...

Global site tag (gtag.js) - Google Analytics