java中的mylogger类

时间:2015-08-19 09:50:36

标签: java logging java.util.logging

我想编写出现在文件中的异常。我正在使用mylogger类。问题是,每次运行应用程序并捕获异常时,都会从文件中删除其他异常。

这是mylogger类

public class MyLogger {

static private FileHandler fileTxt;

static private SimpleFormatter formatterTxt;

private Logger logger;

public void setup() throws IOException {
    logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

    logger.setLevel(Level.INFO);

    fileTxt = new FileHandler("Logging.txt");

    // create a TXT formatter
    formatterTxt = new SimpleFormatter();
    fileTxt.setFormatter(formatterTxt);

    logger.addHandler(fileTxt);
}

public void log(Exception e) {
    logger.info("test");
}

public void logClientReporting(String string) {
    // TODO Auto-generated method stub
    logger.info(string);
}

public void logSocket(String string) {
    // TODO Auto-generated method stub
    logger.info(string);
}
}

我在主类中调用setup。

以下是我调用日志方法的方法:

catch (Exception e) {
        // TODO: handle exception
        System.err.println("JSON Exception in getAvailableDesings");
        logger.logSocket(e.toString());
    }

1 个答案:

答案 0 :(得分:1)

我认为问题在于初始化FileHandler时使用的构造函数。 FileHandler有多个构造函数,其中一个构造函数接受一个名为append的布尔值的第二个参数,应该为true来附加新日志而不覆盖它们。所以它应该是:

fileTxt = new FileHandler("Logging.txt", true);

如果可以,请提供快速建议,使用日志库并且不要尝试重写内容。我建议使用apache log4j2或slf4j,它为您提供了很好的日志记录选项。您可以定义模式,要打印的格式(例如日志开头的日期),时间/文件大小限制,何时再次翻转文件以及许多其他选项。