最近在看《Agile Java》,看到日志一节,收获颇多,所以发个贴总结和大家分享下。
JDK的日志框架的包名是java.util.logging,主要的类有:
- ConsoleHandler
- ErrorManager
- FileHandler
- Formatter
- Handler
- Level
- Logger
- LoggingPermission
- LogManager
- LogRecord
- MemoryHandler
- SimpleFormatter
- SocketHandler
- StreamHandler
- XMLFormatter
ConsoleHandler
ErrorManager
FileHandler
Formatter
Handler
Level
Logger
LoggingPermission
LogManager
LogRecord
MemoryHandler
SimpleFormatter
SocketHandler
StreamHandler
XMLFormatter
其简单用法如下:
- Logger logger = Logger.getLogger(getClass().getName());
- logger.info(message);
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的源码是一个宝藏,包含了大量的编程智慧和设计思想。无论是Lambda表达式、Stream API、并行流,还是新的日期时间API,都值得我们深入研究和学习。通过阅读和理解这些源码,我们可以更好地掌握Java...
【新闻发布系统设计思路】主要涉及的是使用Action框架构建一个新闻发布平台的过程。Action是Struts2框架的核心组件,它处理用户请求并控制应用程序的行为。在这个设计思路中,我们可以通过以下步骤来理解系统的构建...
Java的标准库`java.lang.Math`提供了许多这些函数,如`Math.log()`、`Math.exp()`、`Math.pow()`、`Math.sin()`等。此外,开发者可能还需要自定义一些算法来处理更复杂或特定的计算需求。 为了实现这些功能,开发者...
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、...
SPI的核心思想是接口驱动,它定义了一个或一组公开接口,而具体的实现则由服务提供者提供。当应用运行时,通过SPI机制,可以动态加载符合规范的服务实现,从而实现解耦和扩展性。 **实现步骤** 1. **接口与实现**:...
《Java程序设计教程》是一本专为初学者和有经验的程序员设计的指南,旨在教授如何使用Sun公司的JDK6标准版工具进行Java应用程序开发。该书由陈波和钱能主编,结合了他们丰富的教学和实践经验,内容涵盖从基础知识到...
- Java自带的日志系统`java.util.logging.Logger`自JDK 1.4版本起就被纳入标准库中,但因其与log4j的竞争而较少被关注。 - 在一些简单的测试代码中,使用JDK自带的Logger更为便捷。 #### 2. **创建Logger实例** - ...
此外,提供的PPT演示文件可以帮助用户更好地理解项目结构、功能模块和设计思路,甚至在一些场合中直接用于展示。 最后,本项目资源作为参考资料,如果用户需要实现超出现有功能范围的新功能,需要具备阅读和理解...
2. **需求与功能分析**:明确系统的总体设计思路、流程以及所需的角色、设计原则和研发方向。 3. **逻辑与物理结构设计**:涵盖数据库的设计方案,确保前端展示与后端数据库的有效结合。 4. **核心功能开发**:详细...
系统设计思想是将前台和后台分离,使用 Ajax 技术实现数据传递,提高系统的可扩展性。前台使用 html 页面 + Coffeescript 语言 + Scss 预编译语言编写,后台使用 Java 语言编写,使用了 SSM 三层架构,使用 MySQL ...
Kruskal算法是一种基于贪心策略的算法,其基本思想是始终选择权值最小的边,但同时确保添加的边不会形成环路。以下是Kruskal算法的主要步骤: 1. 首先,对图中的所有边按照权值从小到大排序。 2. 然后,从最小的边...
《Apache Commons Logging详解》 ...这种设计思路在大型项目和企业级应用中非常实用,确保了代码的可维护性和适应性。在实际开发中,掌握Commons Logging的使用能帮助我们更高效地管理和调试代码,提高开发效率。
fourinone是一款分布式协调服务框架,它的设计思路是将任务分配者(工头)和任务执行者(工人)通过一个协调者(职介所)进行连接,实现任务的分布式处理。这个框架的核心概念包括工头进程、工人进程以及职介所服务...
主要功能模块如下(这里提供思路,可自行扩展): 1.普通员工操作模块需要以下功能: 工作日志的管理;个人信息维护;企业通讯录;企业公告。 2.主管操作模块需要以下功能: 员工工作日志管理;个人信息维护; ...
具体的日志输出会根据配置的实现(如Log4j、JDK自带日志等)来决定。 总的来说,Apache Commons Logging作为一款日志接口库,为Java开发带来了极大的便利,它不仅降低了日志实现的切换成本,还提高了代码的可维护性...
AOP的核心思想是将关注点分离,即业务逻辑与系统级服务(如日志、事务管理、权限控制等)分开。在传统OOP(面向对象编程)中,这些服务通常被分散地插入到各个对象的方法中,而在AOP中,它们可以作为独立的“切面”...
项目可能采用了MVC(Model-View-Controller)架构模式,这是一种将业务逻辑、数据和用户界面分离的设计思想。Model负责数据处理,View负责展示,Controller作为中间层协调两者交互,提高代码可维护性和复用性。 2....
这种设计思路使得Spring可以在不同的项目环境中无缝地适应各种日志系统,提高了项目的可移植性和可维护性。 Commons Logging的核心概念包括: 1. **Logger**: 这是日志的主要入口点,每个类都可以通过获取一个...
- JDK的新特性:如JDK5.0和JDK6.0引入的自动拆装箱、可变长参数等。 2. **数据库操作与管理**: - SQL语言:学习SQL的基本语法,如SELECT、INSERT、UPDATE、DELETE,以及IN、BETWEEN、LIKE等操作符。 - JDBC...
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开发...