2013-12-17 2 views
0

«logger.info (сообщение); линия в моем коде создает этот вывод:Как записать сообщение из java.util.logging.Logger Регистрация, а затем распечатать его в текстовом файле?

Дек 17, 2013 12:54:50 PM 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(); 
      }  
     } 

Что я могу включить в заявлении для печати строки вместо вопросительных знаков для достижения этой цели?

+0

Возможный дубликат [Java-код для получения текущего времени] (http://stackoverflow.com/questions/833768/java-code-for-getting-current-time) – OldProgrammer

+0

Что вы пытаетесь выполнить? 'OutputStream.println (« Причина: »+ сообщение);' строка должна печатать '17 декабря 2013 г. 12:54:50 PM greenhouse.GreenhouseControls $ ControllerException' в ваш файл, разве это не происходит? Что вы хотите показать для частей разума и времени? – Ergin

+0

@Ergin Думаю, мне не нужны два оператора печати. Я мог напечатать «Время» и «Причина» в той же строке. Я просто не смог получить дату/время для печати в файл вообще. Итак, я бы хотел, чтобы он печатал 17 декабря 2013 г. 12:54:50 greenhouse.GreenhouseControls $ ControllerException к файлу. – LooMeenin

ответ

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); 
} 

Таким образом, вы получите точную дату записи журнала.

+0

Я заметил, что у вас есть супер (сообщение); и 'this.errorcode = errorcode;' прокомментировал в первом проекте, поэтому я удалил их, и моя программа работает нормально. Должен ли я включить их снова? – LooMeenin

+0

@LooMeenin Вы должны вызвать супер конструктор, чтобы дать ему возможность правильно инициализировать. – Stephan

Смежные вопросы