Log4j官方文档翻译(二、架构设计)

log4j遵循层次化架构,每个层都有不同的对象来执行不同的任务。这种层次话的结构灵活设计、易于未来的扩展。

log4j框架中有两种对象:

  • 核心对象:框架的支撑对象,是框架必不可少的组成部分。
  • 支撑对象:这些是框架可选的对象,用于提供额外重要的工作。

核心对象包括下面几种类型:

  1. logger对象,是最高的层,负责通过不同的风格转化日志信息。它提供给appender对象发布前的信息。(这里的层是指所处的位置)
  2. layout对象,用于提供格式化日志信息的风格,在发布日志信息前,使其变得可读、可重用。
  3. appender对象,这个对象属于底层的对象,它负责发布信息到不同的目的地,比如数据库、文件、控制台、UNIXsyslog等等。

下面就是log4j的架构组成图:

支撑对象,他们在log4j框架中扮演了很关键的角色:

  1. level对象:级别对象定义来日志信息的粒度和优先级,有七种级别:OFF,DEBUG,INFO,ERROR,WARN,FATAL和ALL。
  2. 过滤器对象:用于分析日志信息并决定日志信息是否输出。每个appender对象可以有几个过滤器对象协同工作,当日志信息到达特定的appender时,所有的过滤器会功能帮助appender在其发布到目的地之前进行过滤操作。
  3. 对象渲染器:提供一段字符串用于识别发送日志的不同对象,这个对象也用于为layout对象准备常量信息。
  4. 日志管理器:用于管理日志框架,它负责从初始化配置中读取信息,这个配置可能是文件配置、也可能是类的配置。
时间: 2024-08-10 23:15:52

Log4j官方文档翻译(二、架构设计)的相关文章

【HELLO MAKA】MAKA iOS客户端 之二 架构设计与实现篇

上一篇主要做了MAKA APP的需求分析,功能结构分解,架构分析,API分析,API数据结构分析. 这篇主要讲如何从零做iOS应用架构. [HELLO MAKA]MAKA iOS客户端 之一 APP分析篇 [HELLO MAKA]MAKA iOS客户端 之二 架构设计与实现篇 [HELLO MAKA]MAKA iOS客户端 之三 创作模块分析与实现篇 1.  iOS客户端架构 按照功能模块划分.这里可以使用二层设计也可以使用三层设计.MVC, MVCS, MVVM, MVP, VIPER, DD

Orchard官方文档翻译(二) 安装 Orchard

安装 Orchard 本文内容已在Orchard 1.8 release版本下测试过. 用另外的方式安装Orchard 这里提供了4种安装Orchard的方式. 你能够: 通过Microsoft Web Platform Installer进行安装. 通过Microsoft WebMatrix安装,参阅让Orchard工作在WebMatrix下. 下载Orchard.zip文件并安装,参阅通过zip文件手动安装Orchard. 获取Orchard源码后通过Visual Studio或命令行建立O

Using NSURLConnection 使用NSURLConnection 官方文档翻译(二)

原文地址:developer   使用NSURLConnection NSURLConnection提供最灵活的方法检索URL的内容.这个类提供了一个简单的接口用于创建和取消连接,并支持委派方法的集合,提供反馈和控制连接的许多方面.这些类可分为五类:URL加载.缓存管理.身份验证和凭证,cookie存储和协议的支持.  创建一个连接 NSURLConnection类支持三种方式检索URL的内容:同步,异步使用completion handler block,并使用一个自定义的委托对象异步. 检索

Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)

Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw stream of data flowing through the ingest pipeline is not desired behaviour in many production environments because this may result in leaking sensit

NServiceBus官方文档翻译(二)NServiceBus 入门

在这篇教程中我们将学习如何创建一个非常简单的由客户端向服务端发送消息的订单系统.该系统包括三个项目:Client.Server 和 Messages,我们将按照以下步骤来完成这个任务. 创建 Client 项目 创建 Messages 项目 创建 Server 项目 发送订单 运行解决方案 完整的解决方案代码可以在这里下载. 创建 Client 项目 让我们开始创建 Client 项目,它将负责发送订单请求到一个 NServiceBus 终结点(Endpoint). 以管理员权限运行 Visua

Ext JS 4 架构你的应用 第2节 (官方文档翻译)

原文地址:http://docs.sencha.com/extjs/4.0.7/#!/guide/mvc_pt2 [翻译 by 明明如月 QQ 605283073 本章节配套项目代码将在第3节给出] 上一节:Ext JS 4 架构你的应用 第1节 (官方文档翻译) 下一节:Ext JS4 架构你的应用 第3节 (官方文档翻译) 在上一篇文章中我们介绍了,怎样基于Ext JS构建一个 潘多拉风格的应用. 让我们探讨一下Model-View-Controller(模型-视图-控制器)架构以及怎样将其

架构设计实践二:需求分析

1.1 三个问题 掌握好需求分析,需要掌握三个问题的解决方式. 需求如何获得?需求开发=愿景分析+需求分析 如何判断需求全不全?功能.质量.约束三类需求 如何从需求转换为设计?功能.质量.约束对架构产生不同的影响. 1.2 软件研发与交付过程总图 其中概念化阶段一般都要完成愿景分析.风险评估.可行性分析及项目进度和成本的粗略估算,输出<愿景与范围文档>:需求分析阶段则完成需求捕获.需求分析,得到<软件需求规格说明书>,一个关键的思路是需求捕获与需求分析是迭代着进行的,完成需求捕获之

Python3.2官方文档翻译-标准库概览(二)

7.5 字符串模式匹配 re模块为高级字符串成处理提供了正则表达式匹配. 对于复杂的匹配和处理,正则表达式能够提供简明优化的方法: >>> import re >>> re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest') ['foot', 'fell', 'fastest'] >>> re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat'

缓存架构设计细节二三事

本文主要讨论这么几个问题: (1)"缓存与数据库"需求缘起 (2)"淘汰缓存"还是"更新缓存" (3)缓存和数据库的操作时序 (4)缓存和数据库架构简析 一.需求缘起 场景介绍 缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化. 例如对于用户的余额信息表account(uid, money),业务上的需求是: (1)查询用户的余额,SELECT money FROM account WHERE uid=XXX