0

我无法让我的记录器工作。在我的代码中,我有以下几行:

private static final Logger log = Logger.getLogger(ServerThread.class.getName());
log.setUseParentHandlers(false);
FileHandler fh = new FileHandler("ex.txt", true);
SimpleFormatter sf = new SimpleFormatter();
fh.setFormatter(sf);
log.addHandler(fh);
log.setLevel(Level.FINE);

后来当我从用户那里得到输入时:

log.log(Level.FINE,inputString);

但所发生的只是 fileHandler 创建了一个文件 ex.txt,但没有任何内容记录到该文件中。我确信正在执行 log.log()。

4

2 回答 2

0

确保您只创建一个 FileHandler 并确保您也调整 FileHandler 的级别。

private static final Logger log = Logger.getLogger(ServerThread.class.getName());
private static final FileHandler fh;
static {
    try {
        log.setUseParentHandlers(false);
        fh = new FileHandler("ex.txt", true);
        fh.setFormatter(new SimpleFormatter());
        fh.setLevel(Level.FINE);
        log.addHandler(fh);
        log.setLevel(Level.FINE);
    } catch (IOException ioe) {
        throw new ExceptionInInitializerError(ioe);
    }
}

如果您仍然看不到结果,那么您应该打印记录器树以确保文件处理程序和记录器是在您期望的布局中创建的。

通常,您应该设置一个logging.properties文件。

于 2017-07-10T14:12:56.600 回答
0

您也可以使用这种简单的方法。

public static Logger logger;

public static Logger startLogger() {

    DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-HH-mm-ss");
    Date date = new Date();
    String datefor = dateFormat.format(date);

    logger = Logger.getLogger("MyLog");

    PropertyConfigurator.configure(CLASSPATH + "/" + "log4j.properties");
    Appender appender = null;
    try {

        appender = new FileAppender(new SimpleLayout(), CLASSPATH  + "/log/MyLogFile" + datefor + ".log");
        logger.addAppender(appender);
        appender.setLayout(new SimpleLayout());
    } catch (SecurityException exception) {
        exception.printStackTrace();
    } catch (IOException exception) {
        exception.printStackTrace();
    }
}
于 2017-07-09T03:19:25.177 回答