Java6学习笔记39——日志操作

系统 1560 0

1.简介:

ava.util.logging,它可以对程序中的日志记录进行相当复杂的控制。例如:通过它可以指定日志的级别和日志的位置(控制台、文件、套接字、 内存缓冲区),也可以创建子记录器,通过它可以用程序控制的方式来指定想记录的内容,也可以使用配置文件来指定,而不需要去改动程序。

2.体系:

Java6学习笔记39——日志操作

3.实例:

import java.util.logging.Logger;
import java.util.logging.Level;
import java.util.logging.Handler;
import java.util.logging.FileHandler;
import java.io.IOException;

public class LogDemo3 {
static Logger logger = Logger.getLogger("");
public static void main(String arg[]) {
try {
FileHandler fh = new FileHandler("logfile");
logger.addHandler(fh);
} catch(IOException e) {
System.err.println("Cannot open log file for output");
}

Handler handler[] = logger.getHandlers();
for(int i=0; i<handler.length; i++)
handler[i].setLevel(Level.FINEST);

logger.setLevel(Level.FINEST);

LogDemo3 ld = new LogDemo3();
ld.demonstrate();
}
LogDemo3() {
logger.info("LogDemo3 instantiated.");
}
public void demonstrate() {
logger.fine("Entering the demonstrate method.");
for(int i=0; i<10; i++) {
logger.finest("Loop counter: " + i);
}
logger.fine("Exiting the demonstrate method.");
}
}

4.技巧(转载)

java . util . logging 包提供了强大的日志输出功能,正确和有效的使用这些功能需要一些技巧:

  1. 了解不同的 Level , Level .FINE , LEVEL .FINER , LEVEL .FINEST 用来调试和跟踪程序,比如打印一些调试信息,异常等。 Level .INFO 将打印信息到控制台。
  2. 使用 Logger.isLoggable( Level ) 方法检测当前的 Level ,以此来判断是否输出日志,日志也应该遵循需要时才输出的原则,避免生成大量的调试信息字符串,占用系统内存,影响性能。
  3. 必要时程序化的打开和关闭日志,例如在开发程序时开启大部分日志,为了查错和调试程序,在程序发布时关闭大部分日志,避免影响客户和影响程序性能。
  4. 必要时可以针对一个模块使用唯一的 Logger ,也就是创建 Logger 时传入子模块的名字,所有类使用同一个 Logger ,避免生成太多的 Logger 实例。
  5. 下边是使用日志工具的一段代码:
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 Loggerlog = Logger.getLogger(LoggerTest. class .getName());

/** CreatesanewinstanceofLoggerTest */
public LoggerTest(){
// 使用此方法避免生成需要输出的字符串
if (log.isLoggable( Level .FINE)){
log.log( Level .FINE,
" startconstructing... " );
}
}
/**
*设置指定包的日志输出级别.
*
*
@param packageName指定的包
*
@param fileName指定日志的输出文件
*
@param level 日志输出级别
*/
private static void setLogLevel(StringpackageName,StringfileName, Level level ){
try {
FileHandlerfileHandler
= new FileHandler( " %h/ " + fileName + " %u.log " );
fileHandler.setFormatter(
new SimpleFormatter());
ConsoleHandlerconsoleHandler
= new ConsoleHandler();
consoleHandler.setLevel( level );
Logger.getLogger(packageName).addHandler(fileHandler);
Logger.getLogger(packageName).addHandler(consoleHandler);
Logger.getLogger(packageName).setLevel( level );
}
catch (SecurityExceptionex){
ex.printStackTrace();
}
catch (IOExceptionex){
ex.printStackTrace();
}
}
public static void main(String[]args){
// 启用当前包的全部日志输出
StringpackageName = " javatest " ;
setLogLevel(packageName,packageName, Level .ALL);
LoggerTesttest
= new LoggerTest();
}
}

Java6学习笔记39——日志操作


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论