如何从java.util.logging.Logger记录消息记录,然后将其打印到文本文件?

时间:2013-12-17 21:03:42

标签: java logging

'logger.info(message);'我的代码中的行创建了这个输出:

  

2013年12月17日下午12:54:50   greenhouse.GreenhouseControls $ ControllerException

我想使用PrintWriter将该行打印到文本文件中。这就是我到目前为止所做的:

public ControllerException(String message, int errorcode) {
          super(message);
          this.errorcode=errorcode;   

          Logger logger = Logger.getLogger(ControllerException.class.getName());
          logger.info(message);

          String fileName = "error.log"; 

          try {
            PrintWriter outputStream = new PrintWriter(fileName);
            outputStream.println("Time: " + ????);         // Not sure what to put here..
            outputStream.println("Reason: " + message);
            outputStream.close();
           } catch (FileNotFoundException e) {
            e.printStackTrace();
           }      
       }

我可以在打印行声明中包含哪些内容来代替问号来实现此目的?

1 个答案:

答案 0 :(得分:1)

我会这样做:

public ControllerException(final String message, int errorcode) {
    super(message);
    this.errorcode=errorcode;

    Logger logger = Logger.getLogger(ControllerException.class.getName());

    logger.setFilter(new Filter() {
        @Override
        public boolean isLoggable(LogRecord record) {
            SimpleDateFormat sdf = new SimpleDateFormat("MMM dd',' yyyy HH:mm:ss a");
            String fileName = "error.log";

            try {
                PrintWriter outputStream = new PrintWriter(fileName);
                outputStream.println("Time: " + sdf.format(new Date(record.getMillis()))); 
                outputStream.println("Reason: " + message);
                outputStream.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            return true;
        }
    });

    logger.info(message);
}

这样您就可以获得日志记录的确切日期。