如何为logger生成实例?

时间:2011-06-03 12:32:05

标签: java logging

这是我的代码

package com.my;
import org.apache.log4j.spi.LoggerFactory;
import java.io.*;
import java.util.logging.*;

public class Log {
      public static void main(String[] args) {
      try{
           FileHandler hand = new FileHandler("vk.log");
           Logger log = Logger.getLogger("log_file");
           log.addHandler(hand);
           log.warning("Doing carefully!");
           log.info("Doing something ...");
           log.severe("Doing strictily ");
           System.out.println(log.getName());
      }
      catch(IOException e){
           System.out.println(e)
      }
    }

}

3 个答案:

答案 0 :(得分:4)

如果您删除多余的log.getLogger("");语句并修复导入,您的代码应该有用。

几条评论:

  • 如果您有多个记录器,您可以选择性地打开和关闭它们。通常根据类或包名创建多个记录器; e.g。

    Logger log = Logger.getLogger(this.getClass());
    

    Logger log = Logger.getLogger(SomeClass.class);
    
  • 您正在以编程方式实例化和关联处理程序。将日志记录配置放入XML或属性文件中是一个更好的主意,并使用其中一个配置程序加载它并连接日志记录处理程序。这允许您......或用户...在不修改代码的情况下调整日志记录。

  • 您应该阅读解释上述内容的log4j introduction文档以及有关使用log4j的其他内容。


以上假设您尝试使用log4j。您是否真的尝试使用java.util.logging,有些细节并不完全正确。 (而且,IMO,使用log4j或其中一个后代,会更好

答案 1 :(得分:1)

您的代码或多或少都很好(检查导入),如果删除该行,则应该可以正常工作:

log.getLogger("");

您班级的工作实施将是:

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

public class test {
    public static void main(String[] args) {
    try {
        FileHandler hand = new FileHandler("vk.log");
        Logger log = Logger.getLogger("log_file");
        log.addHandler(hand);
        log.warning("Doing carefully!");
        log.info("Doing something ...");
        log.severe("Doing strictily ");
        System.out.println(log.getName());
    } catch (IOException e) {
        // Handle error.
    }
}

}

你能解释一下你的问题吗?

答案 2 :(得分:1)

以下是一些建议。

  • 注意你的进口,你正在混音 Log4j或java.util.logging导入
  • 无需两次调用getLogger()
  • 做一些例外, 即使这意味着使用 此测试中的 System.out.println() e.printStackTrace() 案件。如果出现问题, 你藏了他们。