全球为数众多的移动电话用户从未使用过任何基于AndroidJDK 日志框架,谷歌的目标是让不依赖于设备甚至平台,希望大家看完本文能给大家带来相关帮助。

日志记录对于软件的维护特别是对于已部署到运行环境之后的软件调试都有着重要的意义。在实际的项目中,往往还需要比该框架所提供的更为复杂的日志功能。对于这种需求,JDK 日志框架具有足够的可扩展能力,可以自定义不同需求的日志处理、消息格式化、日志消息级别等组件。

在下面的内容中,本文将介绍了如何扩展 Android JDK 日志框架,自定义日志处理方式。并就一个实际的例子来介绍如何结合 Android JDK 日志框架和 STAF(Software Testing Automation Framework,一种自动化测试框架)日志服务来对 Java 程序进行监视。

JDK 的日志框架即 java.util.logging 包。对于一个软件的日志系统而言,首先必须得有一个日志对象,该对象负责记录日志信息。同时该信息可以输出到不同的位置,例如控制台,文件甚至网络中。对于信息的格式,则可以根据不同的需求,可以输出成普通文本,XML 或者 HTML 的格式。

同时还需要对日志信息进行不同级别的分类,这样的好处是可以过滤冗余信息,只保留关键的日志。对于一个日志框架而言。日志对象必须是可配置的,它可以按照配置来输出到指定的目标,同时按照配置来决定输出的格式和决定何种级别以上的日志才能输出。

配置的形式还可以是多种多样的,既能是代码的形式,也能是配置文件的形式。尤其是配置文件的形式,对于一个已经部署到运行环境中的软件而言,可以非常方便的改变日志配置而无需改变其源代码。

日志框架提供了上述的所有功能。它主要包括如下几个部件:

Logger:日志记录对象。用于记录日志信息。Handler:用于处理日志信息的输出。在 Handler 类中,可以决定日志是输出到文件中还是控制台中。Filter: 用于过滤日志。在 Filter 类中,可以根据日志级别或者某种条件来决定是否输出该日志。这样达到去除冗余信息的目的。

Formatter:用于格式化日志信息。该类可以将日志文本格式化成 XML 或者 HTML 的格式,这完全依赖于具体的实现。Level:用于表示日志的级别。Android JDK 日志框架默认有如下级别 : SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST 。

对于程序而言,它的 Logger 对象首先会判断日志的级别是否满足输出级别的要求,然后将满足级别要求的日志消息交给所配置的 Handler 对象来处理,如果日志对象配置了一个 Filter 对象。那么 Filter 对象将会对日志信息做一次过滤。 Handler 对象接受到日志消息后,根据其所配置的格式化类 Formatter 来改变日志的格式。

根据所配置的 Filter 对象和 Level 对象来再次过滤日志信息,最后输出到该种 Handler 对象所指定的输出位置中,该输出位置可以是控制台,文件,网络 socket 甚至是内存缓冲区。其架构模型如图:

【责任编辑:苏越 TEL:(010)68476606】

日志框架 android,深度剖析Android JDK 日志框架相关推荐

  1. arraymap android,深入剖析 Android中的 ArrayMap

    数据集合在任何一门编程语言中都是很重要的一部分,在 Android 开发中,我们会实用到ArrayList, LinkedList, HashMap等.其中HashMap是用来处理键值对需求的常用集合 ...

  2. 深度剖析Android IPC原理

    /   今日科技快讯   / 最近俄罗斯技术开发者正在开发一个可以取代谷歌应用商店的国内应用商店NashStore,计划于5月9日发布上线. YouTube和谷歌应用商店本月暂停在俄罗斯市场的所有付费 ...

  3. 深度剖析 Android音频系统解析与改进

    导读:Android是用了一个Google自己开发的中间层API来让APP和声音驱动(ALSA或者HAL封闭驱动)通信的.在早期,它是个ALSA的插件:现在则命名为AudioFlinger.但是安卓音 ...

  4. SpringDataJPA+Hibernate框架源码剖析(六)@PersistenceContext和@Autowired注入EntityManager的区别

    SpringDataJPA+Hibernate框架源码剖析系列文章: SpringDataJPA+Hibernate框架源码剖析(一)框架介绍 SpringDataJPA+Hibernate框架源码剖 ...

  5. libevent源码深度剖析六

    libevent源码深度剖析六 --初见事件处理框架 张亮 前面已经对libevent的事件处理框架和event结构体做了描述,现在是时候剖析libevent对事件的详细处理流程了,本节将分析libe ...

  6. android日记管理,Android日志管理Logger框架的简单介绍

    Android开发中,我们常常用到日志打印.利用系统的Log打印可以满足大部分需求,如果想使用起来更方便一般会在系统Log的基础上再进行封装.比如可以全局定义Tag,亦或是定义一个变量,控制Debug ...

  7. [Android] Toast问题深度剖析(二)

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者: QQ音乐技术团队 题记 Toast 作为 Android 系统中最常用的类之一,由于其方便的api设计和简洁的交互体验,被我们所广泛采用 ...

  8. android日志管理最佳策略,深入Android应用开发:核心技术解析与最佳实践

    资源名称:深入Android应用开发:核心技术解析与最佳实践 内容简介: 如何才能真正进阶为Android应用开发高手?必须深入理解Android核心技术的底层原理和在开发中总结并使用各种最佳实践,别 ...

  9. android core log,Android 日志系统(Logcat)的实现分析

    这篇说一下Android 日志系统的实现: 1. Android中的打印分为4个缓冲区和6个打印等级,在frameworks\base\core\java\android\util\Log.java中 ...

最新文章

  1. 初次尝试使用IDAPro修改程序控制流程
  2. 【LeetCode笔记 - 每日一题】423. 从英文中重建数字(Java、字符串、偏思路)
  3. orm和mysql_orm与mysql
  4. mysql 中序号要怎么写_如何在mysql的字段ID中插入自动编号?
  5. python ssl模块_转 Python3 ssl模块不可用的问题
  6. [转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法
  7. 我,27岁,程序员,今年无情被辞:该转行还是降薪和年轻人抢饭碗?
  8. postgresql和greenplum使用笔记
  9. 曼车仪表显示故障车载计算机,汽车仪表盘上的故障标志图解大全
  10. On Visible Surface Generation BY A PRIORI TREE STRUCTURES
  11. [Design]国粹京剧 脸谱表情 值得收藏
  12. p29 p30 p31 p32
  13. [计算机组成原理]计算机发展历程篇
  14. hive中关键字作为列名的方法
  15. 治愈系插画PSD源文件+笔刷分享
  16. 使用VQGAN+CLIP从图鉴文本描述中生成神奇宝贝
  17. iphone 手机尺寸_iPhone是新的黑莓手机
  18. android app crash测试,APP常见崩溃原因和测试方法整理
  19. go学习 --- gorm使用
  20. Asp.Net 技术

热门文章

  1. leetcode 467. Unique Substrings in Wraparound String | 467. 环绕字符串中唯一的子字符串(动态规划)
  2. C++ 算法设计 最大子序和问题
  3. dart系列之:时间你慢点走,我要在dart中抓住你
  4. MongoDB学习笔记(四)使用Java进行实时监控与数据收集(空间使用量、连接数)
  5. Java Fork/Join 框架
  6. hbase建表,删表,修改,查询(get,scan,布隆过滤器)
  7. 08.update_by_query操作
  8. 【双100%提交】剑指 Offer 09. 用两个栈实现队列
  9. 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是Li, 1<= i<= n。这n 个程序的读取概率分别是p1,p2,...,pn,且pi+p2+...+pn =
  10. 最全!最完整的递归下降分析法代码!!! (实验报告,代码)