Java Logger每次都会生成新的txt文件

时间:2018-01-04 20:13:51

标签: java logging random

#other code&随机化

if(outcome == 1){
    Logger logger = Logger.getLogger("MyLog");
    FileHandler fh;
    fh = new FileHandler("C:\\Temp\\Dice_roll\\Logs.txt", true);
    logger.addHandler(fh);
    logger.setLevel(Level.ALL);
    SimpleFormatter formatter = new SimpleFormatter();
    fh.setFormatter(formatter);
    logger.log(Level.INFO, "Outcome 1.");
}

这应该在txt文件中添加更多文本。但是,它还会生成另一个名为Log.txt的文本文件。 1 然后如果我再次滚动它,Log.txt。 2 ,依此类推。我该如何解决这个问题?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

每次尝试登录时都要添加新的FileHandler。 它必须只做一次!

您必须将Logger设置与其使用区分开来。

请注意,您的记录器必须声明为static final,否则可能会进行垃圾回收,您可能需要重新设置它。

设置代码

private static final Logger logger = Logger.getLogger("MyLog");
static {
    FileHandler fh;
    try {
        fh = new FileHandler("C:\\Temp\\Dice_roll\\Logs.txt", true);
        logger.addHandler(fh);
        SimpleFormatter formatter = new SimpleFormatter();
        fh.setFormatter(formatter);
    } catch (SecurityException ex) {
        ex.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    logger.setLevel(Level.ALL);
}

登录

if(outcome == 1){
    logger.log(Level.INFO, "Outcome 1.");
}

请注意,如果我是你,我宁愿使用configuration file