正确使用java.util.logging包

 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  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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值