正确使用java.util.logging包
来源:互联网 发布:淘宝主图尺寸怎么修改 编辑:程序博客网 时间:2024/06/02 04:19
java.util.logging包提供了强大的日志输出功能,正确和有效的使用这些功能需要一些技巧:
- 了解不同的Level, Level.FINE, LEVEL.FINER,LEVEL.FINEST用来调试和跟踪程序,比如打印一些调试信息,异常等。Level.INFO将打印信息到控制台。
- 使用Logger.isLoggable(Level)方法检测当前的Level,以此来判断是否输出日志,日志也应该遵循需要时才输出的原则,避免生成大量的调试信息字符串,占用系统内存,影响性能。
- 必要时程序化的打开和关闭日志,例如在开发程序时开启大部分日志,为了查错和调试程序,在程序发布时关闭大部分日志,避免影响客户和影响程序性能。
- 必要时可以针对一个模块使用唯一的Logger,也就是创建Logger时传入子模块的名字,所有类使用同一个Logger,避免生成太多的Logger实例。
- 下边是使用日志工具的一段代码:
package javatest;
import java.io.IOException;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
/**
*/
public class LoggerTest {
// 构建Logger
private static Logger log = Logger.getLogger(LoggerTest.class.getName());
/** Creates a new instance of LoggerTest */
public LoggerTest() {
// 使用此方法避免生成需要输出的字符串
if(log.isLoggable(Level.FINE)) {
log.log(Level.FINE, "start constructing...");
}
}
/**
* 设置指定包的日志输出级别.
*
* @param packageName 指定的包
* @param fileName 指定日志的输出文件
* @param level 日志输出级别
*/
private static void setLogLevel(String packageName, String fileName, Level level) {
try {
FileHandler fileHandler = new FileHandler("%h/"+fileName+"%u.log");
fileHandler.setFormatter(new SimpleFormatter());
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(level);
Logger.getLogger(packageName).addHandler(fileHandler);
Logger.getLogger(packageName).addHandler(consoleHandler);
Logger.getLogger(packageName).setLevel(level);
} catch (SecurityException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
// 启用当前包的全部日志输出
String packageName = "javatest";
setLogLevel(packageName, packageName, Level.ALL);
LoggerTest test = new LoggerTest();
}
}
import java.io.IOException;
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
/**
*/
public class LoggerTest {
// 构建Logger
private static Logger log = Logger.getLogger(LoggerTest.class.getName());
/** Creates a new instance of LoggerTest */
public LoggerTest() {
// 使用此方法避免生成需要输出的字符串
if(log.isLoggable(Level.FINE)) {
log.log(Level.FINE, "start constructing...");
}
}
/**
* 设置指定包的日志输出级别.
*
* @param packageName 指定的包
* @param fileName 指定日志的输出文件
* @param level 日志输出级别
*/
private static void setLogLevel(String packageName, String fileName, Level level) {
try {
FileHandler fileHandler = new FileHandler("%h/"+fileName+"%u.log");
fileHandler.setFormatter(new SimpleFormatter());
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(level);
Logger.getLogger(packageName).addHandler(fileHandler);
Logger.getLogger(packageName).addHandler(consoleHandler);
Logger.getLogger(packageName).setLevel(level);
} catch (SecurityException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
// 启用当前包的全部日志输出
String packageName = "javatest";
setLogLevel(packageName, packageName, Level.ALL);
LoggerTest test = new LoggerTest();
}
}
- 正确使用java.util.logging包
- 深探java.util.logging包
- 深探java.util.logging包
- java.util.logging使用示例
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger 使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger 使用例程
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger 使用详解
- meta的用法
- GridView的公共操作方便实用
- 登录安全与连接池的应用
- ASP.NET 数据库操作类---DataSet类
- my synonyms
- 正确使用java.util.logging包
- Java三个月 - 面向对象程序设计OOP的乐趣 - 程序人生
- ASP.NET中用C#类实现Javascript的基本功能
- 图像处理--行程编码
- 数据库操作小类
- common phrases
- 读德鲁克的《卓有成效的管理者》笔记(三) ---如何发挥人的长处
- C#类实现字符串的公共操作二——字符串过滤
- 基于JDBC的数据库连接池技术研究与应用