具有异常的Java Logg处理类

时间:2015-02-04 15:17:04

标签: java logging

我有两个类GetStatus和Logg。

GetStatus从xml文件中读取并选取两个元素并检查其值是对还是错。我们尝试捕获GetStatus和一些例外。

  } catch (IOException ex) {
        logger.log(Level.WARNING, "wrong or interrupted I/O operations.",ex);
    }catch (NumberFormatException ex) {
        logger.log(Level.WARNING, "Wrong argument format", ex);
    } catch (ParserConfigurationException ex) {
        logger.log(Level.WARNING, "Indicates a serious configurationerror",ex);
    } catch (SAXException ex) {
        logger.log(Level.WARNING, "XML Parsing error", ex);

我们希望将异常发送到另一个类,并创建一个文件并记录异常。但是我们想要选择是否必须记录异常,或者只是打印到终端或控制台。我们想用java.util.logging做到这一点。

这是我们的Logg类

    Date date = new Date();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM-dd_HH-mm-ss");

    if (saveMethod == 1) {
        try {
            fh = new FileHandler((dateFormat.format(date) + ".log"), false);
        } catch (Exception e) {
            logger.log(Level.WARNING, "Wrong in Logg", e);
            Logger l = Logger.getLogger("");
            fh.setFormatter(new SimpleFormatter());
            l.addHandler(fh);
            l.setLevel(Level.INFO);
        }
    }
        else{
            System.err.println("You have not chosen save method!");
        }
        return 0;

目前它每次都会创建一个文件。

2 个答案:

答案 0 :(得分:0)

每次都可能会创建一个新文件,因为每次都会给它一个不同的文件名(因为它基于当前时间)。

是否有任何理由不能拥有静态“LOGGER”字段,例如......

public class MyClass {

    public static final Logger LOGGER = Logger.getLogger(MyClass.class);

    ...
}

我假设您使用的是Log4J 1.2?如果是这样,您可以配置为使用将每天创建新日志文件的文件追加器。看到这个链接......

http://blog.moes.as/2008/10/example-of-using-dailyrollingfileappend.html

答案 1 :(得分:0)

刚刚解决了我的问题!使用类Properties,并从名为config的属性文件中获取level参数,这样我就可以选择我想要登录文件的级别,或者只是在终端或控制台中打印出来。

该类将从另一个类获取参数。

    public class Logg {

    private final static Logger logger = Logger.getLogger(Logg.class.getName());
    private static FileHandler fh = null;

    public static void init(int saveMethod) throws IOException {

    String level= "";

    Properties prop = new Properties();

    InputStream in =
            Logg.class.getResourceAsStream("resources\\config");

    if (in != null) {
        prop.load(in);
    } else {
        throw new FileNotFoundException("property file '" + in + "' not found in the classpath");
    }

    level = prop.getProperty("Level");

    Date date = new Date();
    SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH-mm");
    if (saveMethod == 1) {
        try {
            fh = new FileHandler((dateFormat.format(date) + ".log"), false);
        } catch (Exception e) {
            logger.log(Level.INFO, "problems in logg class", e);
        }
        Logger l = Logger.getLogger("");
        fh.setFormatter(new SimpleFormatter());
        l.addHandler(fh);
        l.setLevel(Level.parse(level));

        System.out.println(level);

    } else {
        System.err.println("You have not chosen save method!");
    }
}

}