最近在看《Agile Java》,看到日志一节,收获颇多,所以发个贴总结和大家分享下。
JDK的日志框架的包名是java.util.logging,主要的类有:
ConsoleHandler
ErrorManager
FileHandler
Formatter
Handler
Level
Logger
LoggingPermission
LogManager
LogRecord
MemoryHandler
SimpleFormatter
SocketHandler
StreamHandler
XMLFormatter
其简单用法如下:
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格式的日志。
分享到:
相关推荐
"采用JDK实现的日志框架"是一个基于Java Development Kit(JDK)1.4中的`java.util.logging`包构建的日志系统,它旨在提供与流行的Log4j框架类似的灵活性和功能。 `java.util.logging`是Java平台的标准日志API,自...
5. **使用第三方日志库**:虽然JDK的日志框架能满足基本需求,但功能更强大且被广泛使用的日志库如Log4j、Logback和SLF4J提供了更多的灵活性和性能优化。通过桥接器(如Log4j的JDK14LoggerAdapter或SLF4J的...
在Java开发中,日志组件扮演着至关重要的角色,它帮助开发者记录程序运行时的信息,以...通过学习`关于日志的处理_jdkLog_commonLog_log4j`这个文档,你将深入理解这些组件的原理和实践,为你的Java开发之路添砖加瓦。
13. **日志API**:JDK6提供了一种统一的日志接口,允许开发者选择不同的日志实现,如Log4j或Java内置的日志框架。 JDK6 API中文参考手册全面地涵盖了这些内容,对于每一个类、接口、方法和异常,都有详细的描述、...
总结起来,JDK自带的日志包提供了一套完整的日志处理框架,包括日志记录器、处理器和格式化器。开发者可以根据项目需求,灵活配置这些组件,实现定制化的日志记录和输出。通过学习和理解这些基本概念,我们可以更好...
3. **JDK 1.4日志框架**: 如果log4j不存在,则进一步检查Classpath中是否存在JDK 1.4的日志实现。如果存在,则使用 **JDK14Logger**。 4. **默认的SimpleLog**: 如果上述所有条件均不满足,则使用 **SimpleLog** ...
Java 8对并发工具类进行了增强,如`ConcurrentHashMap`添加了新的操作,`ForkJoinPool`和`RecursiveTask`提供了并行计算框架。 ### 10. 其他改进 包括新的`Map`接口方法(如`putIfAbsent`,`computeIfAbsent`),...
Log4j是一款广泛使用的日志管理框架,尤其在Java EE开发中非常常见。它提供了灵活的日志配置和丰富的功能,使得开发者能够高效地管理和控制应用程序的日志输出。 首先,JDK自身提供了一个日志记录包——`java.util....
虽然JDK Logger在简单场景下已经足够使用,但在大型项目中,可能需要更强大和灵活的日志框架,如Log4j或Logback。这些框架提供了更多功能,如异步日志处理、更高级的过滤规则和更丰富的插件体系。 ### 总结 JDK ...
在并发编程方面,JDK1.8对Fork/Join框架进行了优化,引入了并行流(Parallel Stream)。并行流利用多核处理器的优势,自动将任务拆分为子任务并行执行,从而显著提升性能。`java.util.concurrent`包中的`ForkJoinPool`...
这个压缩包文件包含的是Log4j的官方源码,对于开发者来说,能够直接导入到Eclipse中进行学习和研究,或者进行二次开发,具有很高的价值。下面将详细解释Log4j的核心概念、功能以及如何在Eclipse中使用这些源码。 1....
Log4j是Apache组织提供的一款开源日志框架,尤其在Java开发领域中被广泛应用。本合集主要涵盖了Log4j 1.2系列的多个版本,包括从1.2.8到1.2.17,旨在帮助开发者更好地理解和使用这个经典的日志系统。 **1. Log4j的...
在大型项目中,通常会使用第三方日志框架,如Log4j或SLF4J,因为它们更强大且更易于管理和扩展。 总的来说,理解和熟练运用这些日期时间处理和日志记录的方法对于Java开发者来说至关重要,它们是构建可靠、可维护的...
Struts、Spring、Hibernate、Log4j和Validator是Java Web开发中的重要框架和技术,它们各自在应用程序的不同层面发挥着关键作用。在这个实例演示中,这些技术被整合到一起,构建了一个完整的Java EE应用。 1. **...
目前,我是随着时间的变化每次测试中重建机器学习框架,重新生成一套系数,但是这样系数变化会比较大,我需要利用强化学习把这个系数变化做得更平滑一些,求大神指教(请根据以下代码进行添加和修改,我看了很多强化...
项目可能使用Log4j或Logback等日志框架来记录程序运行过程中的信息,这对于调试和问题排查非常有用。 通过对这些知识点的学习和实践,初学者可以更好地理解和参与到这个项目中,逐步提升自己的Java开发技能。
本套Java视频教程详细讲解了代理设计模式的用法。分别讲述了静态代理、JDK动态代理,及CGLIB动态代理的用法,及应用场景对比。此套Java视频教程适合Java初学者,为以后的学习打下坚实基础。
3. **slf4j-jdk14.jar**: SLF4J的JDK 1.4绑定库,用于将SLF4J日志调用路由到JDK 1.4的日志框架。 **五、学习资源** 学习Mina2框架,可以通过阅读官方文档、参考教程和开源项目,理解其设计理念和使用方式。同时,...
结合数据库连接池和JDK日志,我们可以编写一个简单的应用程序,用于执行SQL查询并记录操作过程中的日志。例如,在执行查询前记录开始信息,查询后记录结束信息,如果发生异常则记录错误日志。 ```java public void ...
Java Logging API是一个全新的日志框架,它被包含在JDK 1.4.0的`java.util.logging`包中。这个API提供了一种统一的方式来记录和管理日志信息,可以有效地帮助开发者、系统管理员和维护人员分析和解决问题。 #### ...