首页 > 其他分享 >Log4j初学

Log4j初学

时间:2023-09-25 12:33:55浏览次数:59  
标签:框架 对象 信息 Appender 初学 日志 Log4j



Log4j入门简介

Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。

Log4j中有三个主要组成部分:

loggers: 负责捕获记录信息。

appenders : 负责发布日志信息,以不同的首选目的地。

layouts: 负责格式化不同风格的日志信息。

log4j架构

Log4j API设计为分层结构,其中每一层提供了不同的对象,对象执行不同的任务。这使得设计灵活,根据将来需要来扩展。有两种类型可用在Log4j的框架对象:

核心对象: 框架的强制对象和框架的使用。

支持对象: 框架和支持体核心对象,可选的对象执行另外重要的任务。

核心对象

1、Logger对象

顶级层的Logger,它提供Logger对象。Logger对象负责捕获日志信息及它们存储在一个空间的层次结构。

2、布局对象

该层提供其用于格式化不同风格的日志信息的对象。布局层提供支持Appender对象到发布日志信息之前。布局对象的发布方式是人类可读的及可重复使用的记录信息的一个重要的角色。

3、Appender对象

下位层提供Appender对象。Appender对象负责发布日志信息,以不同的首选目的地,如数据库,文件,控制台,UNIX系统日志等。以下是显示Log4J框架的不同组件的虚拟图:

Log4j初学_日志框架



支持对象

log4j框架的其他重要的对象起到日志框架的一个重要作用:

1、Level对象

级别对象定义的任何记录信息的粒度和优先级。有记录的七个级别在API中定义:OFF, DEBUG, INFO, ERROR, WARN, FATAL 和 ALL

2、Filter对象

过滤对象用于分析日志信息及是否应记录或不用这些信息做出进一步的决定。一个appender对象可以有与之关联的几个Filter对象。如果日志记录信息传递给特定Appender对象,都和特定Appender相关的Filter对象批准的日志信息,然后才能发布到所连接的目的地。

3、对象渲染器

ObjectRenderer对象是一个指定提供传递到日志框架的不同对象的字符串表示。这个对象所使用的布局对象来准备最后的日志信息。

4、日志管理


日志管理对象管理的日志框架。它负责从一个系统级的配置文件或配置类读取初始配置参数。

参考:



http://www.jb51.net/article/74475.htm


http://www.yiibai.com/log4j/log4j_architecture.html





标签:框架,对象,信息,Appender,初学,日志,Log4j
From: https://blog.51cto.com/u_6947107/7594631

相关文章

  • SDTM初学笔记 - [001] - SDTM基础概念学习
    SDTM,全称StudyDataTabulationModel,围绕着observations的概念构建,observations由研究期间收集的一些离散信息组成,通常对应于数据集中的rows。1Domains一个domain是关于一个特定topic的观测的集合。SDTM的首要目的是展示关于研究受试者的数据(可能是humans,或animals,或medical......
  • django初学
    其实还有个drf框架#django把框架分为一个项目包含很多应用pythonmanage.pystartapppolls该命令在在manage.py同级下创建应用目录polls是应用的名字!!!!!!!!!!!!!!!!#应用创建完之后需要在setting里面注册 #编写url和views函数的对应关系 页面的话,#映射网页的话,在应......
  • Apache Log4j Server CVE-2017-5645 反序列化命令执行漏洞
    漏洞描述攻击者可以通过发送一个特别制作的2进制payload,在组件将字节反序列化为对象时,触发并执行构造的payload代码。该漏洞主要是由于在处理ObjectInputStream时,接收函数对于不可靠来源的input没有过滤。可以通过给TcpSocketServer和UdpSocketServer添加可配置的过滤功能以及一......
  • 机器学习初学与复习最佳教材—机器学习实战
    https://book.douban.com/subject/35218199/半年多几乎没碰机器学习,都快忘光了,虽然可能以后不做这方面研究,但作为实用小工具或者说基本技能来说还是很不错的!这本书的课后习题还可以用来复习概念。所以就有空整理一下里面的概念啦。《机器学习实战:基于Scikit-Learn、Keras和Tenso......
  • 数组初学习
    数组创建数组是相同类型的有序组合//创建命令int[]nums=newint[个数]下图为实践计算数组中所有数的和三种初始化和内存分析数组被声明时会存在栈中,真正创建时数组才会存在堆中,我们无法调用超过数组最大下标的数组,会报错java.lang.ArrayIndexOutOfBoundsException意思是......
  • Fragment初学2——使用Fragment
    一般创建Fragment需要实现如下三个方法。onCreate():系统创建Fragment对象后回调该方法,实现代码中只初始化Fragment中的组件。onCreateView():当Fragment绘制界面组件时回调该方法,该方法返回的view就是该Fragment所显示的View。onPause():当用户离开该Fragme......
  • Fragment初学5——使用Fragment的子类PreferenceFragment
    在Android的应用中通常都有setting功能,能够设置一些全局的选项,例如字体颜色,个人喜好等等。这些东西都存在一个xml中,在android中对应的对象就是SharedPreferences。在android3.0之前,我们一般继承PreferenceActivity这个基类去实现相关的方法。在3.0之后的系统中当然选择使用Preferen......
  • Fragment初学7——Fragment在Android开发中的应用1
    Fragment的常用功能通过getFragmentManager()方法,可以得到FragmentManager对象,主要完成下面的功能(1).得到已经存在Fragment对象如果该fragment在布局文件中指定了id,通过findFragmentById()得到对象,或者指定了tag可以通过findFragmentByTag()得到对象Fragment fragment = getFra......
  • Fragment初学4——使用Fragment的子类ListFragment
    ListFragment的例子,MainActivity左边显示一个ListFragment,右边是一个FrameLayout容器,该FrameLayout容器将会动态更新其中的FragmentMainActivity布局文件如下:<?xmlversion="1.0"encoding="utf-8"?><!--定义一个水平排列的LinearLayout,并指定使用中等分隔条-->......
  • 自定义初学2——扩展View
    倘若我们需要的功能找不到对应的系统控件了,这时我们就只能自己绘制了。首先定义一个继承View的基类,然后重写View类的一个或多个方法。通常可以被重写的方法有这些:onFinishInflate():这是一个回调方法,当应用从XML布局文件中加载组件时,该方法将被调用。onMeasure(int,int):该方法......