简单的实现了下利用JDK中类java.util.logging.Logger来记录日志。主要在于仿照log4j方式用配置文件来配置日志的输出。网络上关于如何使用java.util.logging.Logger的文章很多,但是没有完整的如何通过配置配置文件来达到控制日志输出的资料。本文的目的在于此,欢迎拍砖。
上码。。。
1.首先封装了个LogManager。该类的主要作用就是static块中的代码,意在读取properties文件,初始化日志属性。
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Logger;
public class LogManager {
// 初始化LogManager
static {
// 读取配置文件
ClassLoader cl = LogManager.class.getClassLoader();
InputStream inputStream = null;
if (cl != null) {
inputStream = cl.getResourceAsStream("log.properties");
} else {
inputStream = ClassLoader
.getSystemResourceAsStream("log.properties");
}
java.util.logging.LogManager logManager = java.util.logging.LogManager
.getLogManager();
try {
// 重新初始化日志属性并重新读取日志配置。
logManager.readConfiguration(inputStream);
} catch (SecurityException e) {
System.err.println(e);
} catch (IOException e) {
System.err.println(e);
}
}
/**
* 获取日志对象
* @param clazz
* @return
*/
public static Logger getLogger(Class clazz) {
Logger logger = Logger
.getLogger(clazz.getName());
return logger;
}
}
2.在需要记录日志的地方,通过LogManager.getLogger()方法得到Logger对象,然后调用其记录日志的方法记录日志。这里,我记录错误堆栈信息是用的 log(Level level, String msg, Throwable thrown) 。
贴出我的properties配置文件内容,其中handlers属性一定别忘了,我就因为缺少这个属性花费了很多时间找原因。
#Level的五个等级SEVERE(最高值) 、WARNING 、INFO 、CONFIG 、FINE 、FINER 、FINEST(最低值) 。这个不同于log4j
#为 Handler 指定默认的级别(默认为 Level.INFO)。
java.util.logging.ConsoleHandler.level=INFO
# 指定要使用的 Formatter 类的名称(默认为 java.util.logging.SimpleFormatter)。
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
# 为 Handler 指定默认的级别(默认为 Level.ALL)。
java.util.logging.FileHandler.level=INFO
# 指定要使用的 Formatter 类的名称(默认为 java.util.logging.XMLFormatter)。
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
# 指定要写入到任意文件的近似最大量(以字节为单位)。如果该数为 0,则没有限制(默认为无限制)。
java.util.logging.FileHandler.limit=1024000
# 指定有多少输出文件参与循环(默认为 1)。
java.util.logging.FileHandler.count=1
# 为生成的输出文件名称指定一个模式。有关细节请参见以下内容(默认为 "%h/java%u.log")。
java.util.logging.FileHandler.pattern=C:/SSLog%u.log
# 指定是否应该将 FileHandler 追加到任何现有文件上(默认为 false)。
java.util.logging.FileHandler.append=true
handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler
这样配置后还有一个缺陷,日志文件累积到指定的大小时,将会被重新创建,也就是之前的日志信息会丢失,但是不设置大小的话会导致单个文件过大。关于这个问题还没有花时间去细究,以下这篇博文应该能解决这一问题。
为java.util.logging自定义文件处理器及日志输出格式
分享到:
相关推荐
### Java.util.logging.Logger 使用详解 #### 一、创建Logger对象 在Java中,`java.util.logging.Logger` 是标准的日志框架之一,它提供了基础的日志记录功能。为了使用这一功能,首先需要获得 `java.util.logging...
总之,Java Swing应用可以通过`java.util.logging`包中的`Logger`类,结合`logging.properties`配置文件或在代码中动态设置,实现对错误日志的记录和管理。这不仅可以帮助开发者调试程序,也是生产环境中监控系统...
Java原生日志工具Logger是JDK自带的日志处理工具,位于java.util.logging包中。它提供了一个灵活的日志处理机制,允许开发者自定义日志的输出级别、输出目标和格式。 日志级别是可以动态设置的,开发者可以根据需要...
2. **配置日志级别**:通过`java.util.logging.Logger.setLevel()`方法,我们可以为特定的Logger设置不同的日志级别,以便控制记录哪些级别的日志。同时,可以在配置文件中指定全局或特定Logger的级别,例如`logging...
`MySimpleFormatter.java`可能定义了一个简单的日志格式化器,继承自`java.util.logging.Formatter`,并覆盖`format(LogRecord)`方法,以自定义日志输出的样式。默认的`SimpleFormatter`会输出一条简洁的消息,但...
标题 "JDK Logger 简介" 涉及到的是Java开发中日志记录的基础知识,特别是使用JDK内置的`java.util.logging`包。这个API为开发者提供了一种简单而灵活的方式来记录应用程序的运行时信息,帮助调试、监控和故障排除。...
对于希望深入理解并定制JDK日志框架的开发者来说,研究`LogConfig.xml`的配置以及`java.util.logging`的API是非常有必要的。这包括学习如何创建自定义的`Handler`、`Filter`和`Formatter`,以及如何通过代码动态调整...
4. **可配置性**:通过配置文件,开发者可以自定义日志输出格式、文件位置、日志级别策略等,实现日志系统的个性化配置。 5. **性能优化**:JBoss Logging针对性能进行了优化,减少了不必要的日志操作,降低了对...
通过`Logger`、`Handler`和`Formatter`等类,开发者可以灵活地控制日志输出的级别、格式和目的地。 4. ** assert 关键字** `assert`关键字在JDK 1.4中首次引入,用于编写单元测试和调试代码,它可以检查程序内部的...
在Java世界里,有多种日志框架可供选择,其中包括Jakarta Commons Logging(JCL)、JDK 1.4自带的Logger以及广泛使用的Log4j。下面将详细阐述这些日志工具的使用方法。 1. **Jakarta Commons Logging (JCL)** JCL...
这个库允许开发者在不改变代码的情况下,自由地切换不同的日志实现,如Log4j、Java内置的日志API(java.util.logging)或者其它第三方日志框架。在给定的"commons-logging.rar"压缩包中,包含的"commons-logging....
例如,设置`java.util.logging.LogManager`可以影响`Jdk14Logger`的行为,而设置`log4j.properties`或`log4j.xml`可以控制`Log4jLogger`的日志输出。 4. **性能和可扩展性**:由于其轻量级的设计,Commons Logging...
这个库的主要目标是为Java应用程序提供一个简单、统一的接口来使用各种日志框架,如log4j、Java内置的日志API(java.util.logging)或简单的控制台输出。在本文中,我们将深入探讨Commons Logging的核心概念、主要...
1. **配置日志处理器**:在`logging.properties`文件中配置日志级别、输出目的地等。例如,将所有消息输出到控制台: ``` handlers = java.util.logging.ConsoleHandler .level = ALL java.util.logging....
2. 配置日志实现,可以通过设置`java.util.logging.config.file`、`log4j.configuration`等系统属性,或者在类路径下放置适当的配置文件(如log4j.properties)。 3. 在代码中获取并使用Logger,如`Logger logger = ...
6. **日志配置**: 虽然SLF4J不直接处理日志配置,但你可以通过JUL的配置文件(logging.properties)来定制日志输出,例如设置日志级别、指定日志文件位置、定义日志格式等。 7. **日志实践**: 在代码中,应尽量避免...
1. **java.util.logging.Logger**:这是JDK内置的日志API,提供基本的日志记录功能。每个类都可以拥有一个或多个Logger实例,它们负责记录与该类相关的日志信息。Logger类提供了多种级别,如SEVERE、WARNING、INFO、...
4. 多种实现类,如`org.apache.commons.logging.impl.Log4JLogger`、`org.apache.commons.logging.impl.Jdk14Logger`等,这些实现类对应于各种日志框架。 在"ant.license.txt"文件中,通常包含了软件的许可协议信息...
Java日志框架,尤其是`java.util.logging`包,是JDK1.4引入的一个强大工具,旨在替代传统的`System.out.println()`方式,提供更高效、更灵活的日志管理和记录功能。这个框架允许开发者创建和管理日志记录,方便对...