`

JDK Log的设计思想

 
阅读更多

最近在看《Agile Java》,看到日志一节,收获颇多,所以发个贴总结和大家分享下。

JDK的日志框架的包名是java.util.logging,主要的类有:

Java代码 复制代码 收藏代码
  1. ConsoleHandler    
  2. ErrorManager    
  3. FileHandler    
  4. Formatter    
  5. Handler    
  6. Level    
  7. Logger    
  8. LoggingPermission    
  9. LogManager    
  10. LogRecord    
  11. MemoryHandler    
  12. SimpleFormatter    
  13. SocketHandler    
  14. StreamHandler    
  15. XMLFormatter  
ConsoleHandler 
ErrorManager 
FileHandler 
Formatter 
Handler 
Level 
Logger 
LoggingPermission 
LogManager 
LogRecord 
MemoryHandler 
SimpleFormatter 
SocketHandler 
StreamHandler 
XMLFormatter



其简单用法如下:

Java代码 复制代码 收藏代码
  1. Logger logger = Logger.getLogger(getClass().getName());  //根据当前的class.getName()获得日志实例   
  2. logger.info(message);  //用日志输出一条info级别的消息;  
Logger logger = Logger.getLogger(getClass().getName());  //根据当前的class.getName()获得日志实例
logger.info(message);  //用日志输出一条info级别的消息;




日志级别有7个等级,分别是:
severe严重、warning警告、info信息、config配置、fine良好、finner较好、finest最好
如果日志对象设置为警告,那么只能输出警告和严重的日志;

JDK中的日志设计使用了观察者模式,观察者就是Handler,发布日志时会调用所有注册(logger.addHandler(handler))过的Handler中的publish(LogRecord)方法。默认Handler就ConsoleHandler,还有FileHandler、SocketHandler,MemoryHandler。

每条日志都封装在LogRecord对象中。

默认情况下使用的jre\lib\logging.properties配置文件来输出日志,也可以通过java.util.logging.config.file系统属性来自定义日志属性配置文件。例如: java -Djava.util.logging.config.file=myfile

配置文件中有一段
        java.util.logging.FileHandler.pattern = %h/java%u.log

其中%h和%u叫做域,域%h告诉FileHandler将日志文件存储在用户主目录。FileHandler定义很多域,包括%t和%g,%t代表临时目录,%g代表循环计数,联合使用java.util.logging.FileHandler.count和java.util.logging.FileHandler.limit属性。属性limit代表以字节为单位的日志文件的上限。如果为0,表示日志文件大小不做限制。当日志文件的大小达到了上限,FileHandler对象会关闭该文件。域count指定FileHandler可以循环使用多少个日志文件。如果count为1,那么当达到上限时,FileHandler会继续使用原来的日志文件。

配置文件可以定义输出格式,每种格式都是java.util.logging.Formatter的子类,Sun提供了两种实现SimpleFormatter和XMLFormatter,前者生成两行日志信息,后者生成XML格式的日志。

分享到:
评论

相关推荐

    jdk1.8源码

    总的来说,JDK1.8的源码是一个宝藏,包含了大量的编程智慧和设计思想。无论是Lambda表达式、Stream API、并行流,还是新的日期时间API,都值得我们深入研究和学习。通过阅读和理解这些源码,我们可以更好地掌握Java...

    新闻发布系统设计思路(Action)

    【新闻发布系统设计思路】主要涉及的是使用Action框架构建一个新闻发布平台的过程。Action是Struts2框架的核心组件,它处理用户请求并控制应用程序的行为。在这个设计思路中,我们可以通过以下步骤来理解系统的构建...

    Based-on-Java-JDK-calculator.rar_Java科学计算器_calculator

    Java的标准库`java.lang.Math`提供了许多这些函数,如`Math.log()`、`Math.exp()`、`Math.pow()`、`Math.sin()`等。此外,开发者可能还需要自定义一些算法来处理更复杂或特定的计算需求。 为了实现这些功能,开发者...

    springMVC+Spring+Mybatis+Maven整合代码案例

    1、工具:jdk1.7.0_80(64)+tomcat7.0.68+myeclipse10.6+mysql-5.5.48-win32 2、 开发环境安装配置、Maven项目创建(参考:http://www.cnblogs.com/cac2020/p/5222658.html) 3、技术框架:Spring 4.1.4.RELEASE、...

    记一次 JDK SPI 配置不生效的问题 → 这么简单都不会,还是回家养猪吧.doc

    SPI的核心思想是接口驱动,它定义了一个或一组公开接口,而具体的实现则由服务提供者提供。当应用运行时,通过SPI机制,可以动态加载符合规范的服务实现,从而实现解耦和扩展性。 **实现步骤** 1. **接口与实现**:...

    java程序设计教程

    《Java程序设计教程》是一本专为初学者和有经验的程序员设计的指南,旨在教授如何使用Sun公司的JDK6标准版工具进行Java应用程序开发。该书由陈波和钱能主编,结合了他们丰富的教学和实践经验,内容涵盖从基础知识到...

    测试开发系类之测试报告设计.pptx

    - Java自带的日志系统`java.util.logging.Logger`自JDK 1.4版本起就被纳入标准库中,但因其与log4j的竞争而较少被关注。 - 在一些简单的测试代码中,使用JDK自带的Logger更为便捷。 #### 2. **创建Logger实例** - ...

    项目工时管理系统设计与实现.doc

    2. **需求与功能分析**:明确系统的总体设计思路、流程以及所需的角色、设计原则和研发方向。 3. **逻辑与物理结构设计**:涵盖数据库的设计方案,确保前端展示与后端数据库的有效结合。 4. **核心功能开发**:详细...

    基于java的医院挂号系统答辩PPT.pptx

    系统设计思想是将前台和后台分离,使用 Ajax 技术实现数据传递,提高系统的可扩展性。前台使用 html 页面 + Coffeescript 语言 + Scss 预编译语言编写,后台使用 Java 语言编写,使用了 SSM 三层架构,使用 MySQL ...

    算法分析与设计-实验一 最小生成树实验报告.docx

    Kruskal算法是一种基于贪心策略的算法,其基本思想是始终选择权值最小的边,但同时确保添加的边不会形成环路。以下是Kruskal算法的主要步骤: 1. 首先,对图中的所有边按照权值从小到大排序。 2. 然后,从最小的边...

    commons-logging-1.1.1.jar

    《Apache Commons Logging详解》 ...这种设计思路在大型项目和企业级应用中非常实用,确保了代码的可维护性和适应性。在实际开发中,掌握Commons Logging的使用能帮助我们更高效地管理和调试代码,提高开发效率。

    fourinone源代码分析

    fourinone是一款分布式协调服务框架,它的设计思路是将任务分配者(工头)和任务执行者(工人)通过一个协调者(职介所)进行连接,实现任务的分布式处理。这个框架的核心概念包括工头进程、工人进程以及职介所服务...

    【毕业设计】企业员工绩效考评APP的设计与实现.zip

    主要功能模块如下(这里提供思路,可自行扩展): 1.普通员工操作模块需要以下功能: 工作日志的管理;个人信息维护;企业通讯录;企业公告。 2.主管操作模块需要以下功能: 员工工作日志管理;个人信息维护; ...

    commons-logging-1.2.zip

    具体的日志输出会根据配置的实现(如Log4j、JDK自带日志等)来决定。 总的来说,Apache Commons Logging作为一款日志接口库,为Java开发带来了极大的便利,它不仅降低了日志实现的切换成本,还提高了代码的可维护性...

    (入门)什么是AOP?什么是代理模式?怎么设计日志拦截器?

    AOP的核心思想是将关注点分离,即业务逻辑与系统级服务(如日志、事务管理、权限控制等)分开。在传统OOP(面向对象编程)中,这些服务通常被分散地插入到各个对象的方法中,而在AOP中,它们可以作为独立的“切面”...

    java毕业设计之家政服务管理系统网站源码.zip

    项目可能采用了MVC(Model-View-Controller)架构模式,这是一种将业务逻辑、数据和用户界面分离的设计思想。Model负责数据处理,View负责展示,Controller作为中间层协调两者交互,提高代码可维护性和复用性。 2....

    commons-logging-1.2_commonslogging_

    这种设计思路使得Spring可以在不同的项目环境中无缝地适应各种日志系统,提高了项目的可移植性和可维护性。 Commons Logging的核心概念包括: 1. **Logger**: 这是日志的主要入口点,每个类都可以通过获取一个...

    Java软件工程师课表.docx

    - JDK的新特性:如JDK5.0和JDK6.0引入的自动拆装箱、可变长参数等。 2. **数据库操作与管理**: - SQL语言:学习SQL的基本语法,如SELECT、INSERT、UPDATE、DELETE,以及IN、BETWEEN、LIKE等操作符。 - JDBC...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 2.2.1 Model1规范 2.2.2 Model2规范 2.3 使用MVC的优劣 2.3.1 使用MVC模式的好处 2.3.2 使用MVC模式的不足之处 2.4 目前市场上常见的轻量级J2EE开发...

Global site tag (gtag.js) - Google Analytics