Как записать журнал ошибок или исключение в файл в java
есть ли способ записать журнал ошибок или исключение в файл на java. я прошел через Log4j. Я погуглил об этом, но diidnt найти хорошее решение. Я написал простой код
catch (Exception e) {
PrintWriter pw = new PrintWriter(new FileOutputStream("Log"));
e.printStackTrace(pw);
}
есть ли другой способ регистрации ошибок или исключений? может ли любое тело предоставить мне пример примера Log4j?
5 ответов
впервые прочитала инструкция к log4j, легко настроить скользящий файл журнала. Вам не нужно выполнять какие-либо явные операции с файлами.
#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's 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
вы можете добавить исключение в качестве параметра в оператор log4j, например
catch(Exception e)
{
logger.error("Unexpected error", e);
}
Если у вас есть файл appender работает нормально, это выведет полную трассировку стека исключения.
try {
System.setErr(new PrintStream(new FileOutputStream(System.getProperty("user.home")+"/error.log")));
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
теперь все выходные данные ошибок записываются в этот файл
используя log4j
вы можете войти exceptiosn довольно легко:
try {
...
} catch(Exception e) {
log.error("An exception! Oops!", e);
}
посмотрите этот учебник о "File Appender"
посмотреть официальный Log4j краткое введение и раздел "Конфигурация".
вы также можете сделать поиск о " RollingFileAppender "или"File 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);
}