Подтвердить что ты не робот

Как написать журнал ошибок или исключение в файл в java

Есть ли способ записать журнал ошибок или исключение в файл в java. Я прошел через Log4j. Я googled об этом, но diidnt найти хорошее решение. Я написал простой код

catch (Exception e) {
    PrintWriter pw = new PrintWriter(new FileOutputStream("Log"));     
    e.printStackTrace(pw);
} 

Есть ли другой способ регистрации ошибок или исключений? может ли любой орган предоставить мне пример примера Log4j?

4b9b3361

Ответ 1

Сначала прочитайте log4j Manual, легко настроить скользящий файл журнала. Вам не нужно делать какие-либо явные операции с файлами.

#SET LEVEL of ROOT-LOGGER, you will like to have Debug in local, but in prod you may just want WARN and ABOVE. This setting is done here!
log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller file name and line number. (basically, format of log)
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

# THIS IS WHERE YOU WILL HAVE ALL THE LOG WRITTEN
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=/var/log/applogs/example.log

# Maximum size of log file, usually we keep 10MB
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file, usually we keep 10
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

Во-вторых, всякий раз, когда вы поймаете исключение, сделайте так:

public class MyClass{

  private static Logger logger = Logger.getLogger(MyClass.class);

  public ReturnType myMethod(Param p, Param2 p2) {
    ....
    ....
    try {
      ..    
    } catch(MyException e) {
       logger.log("Exceptions happen!", e); //this will put all the details in log file configured earlier
    }
    ....
  }

  ....
}

Стоит прочитать руководство. Еще лучше прочитать Завершить log4j Manual

Ответ 2

try {
       System.setErr(new PrintStream(new FileOutputStream(System.getProperty("user.home")+"/error.log")));
} catch (FileNotFoundException ex) {
        ex.printStackTrace();
}

Теперь весь вывод ошибки записывается в этот файл

Ответ 3

Вы можете добавить исключение в качестве параметра в свой оператор log4j, например

catch(Exception e)
{
    logger.error("Unexpected error", e);
}

Если у вас есть файл-приложение, работающее нормально, это приведет к полной трассировке стека исключения.

Ответ 4

Используя log4j, вы можете легко регистрировать исключение:

try {
    ...
} catch(Exception e) {
    log.error("An exception! Oops!", e);
}

Ответ 5

Посмотрите этот урок о "File Appender"

См. официальное краткое введение в Log4j и раздел "Конфигурация".

Вы также можете выполнить поиск по "RollingFileAppender" или "File appender".

Вы настраиваете регистратор для отправки своего сообщения в приложение. Этот appender может перенаправить сообщение в консоль (stdin) в файл (FileAppender, RollingFileAppender...)...

Используйте это для выполнения журнала ошибок:

try{
    throw new Exception("bla bla bla...");
} catch( Exception e ){
     // log without stack trace
     mLogger.error("Your log message");

     // log with stack trace
     mLogger.error("Your log message", e);
}