仅在发生错误或异常而不使用log4j时创建日志文件

时间:2012-11-09 06:50:46

标签: java file exception logging error-handling

我想维护一个日志文件或txt文件,我可以在txt或log文件中维护异常详细信息以及其他一些细节。方案是这样的

try {
    .......
} catch(exception e) {
    here the file should be created
}

如果不使用日志框架,最佳的优化解决方案是什么。

这对我有用吗?

try  {
    // something
} catch (Exception ex) {
    ex.printStackTrace(new PrintStream(new File("error.log")));
}

4 个答案:

答案 0 :(得分:1)

如果您不想使用任何日志框架,可以查看Java Logging Framework并使用它来创建自己的实现

java.util.logging包含您实施所需的所有必需类

答案 1 :(得分:1)

我不知道为什么你不喜欢使用logger Framework。 好的,您可以在顶层创建FileWritter对象,并在您想要的类中使用它。

BufferedWriter bw = null;
String path = "your//file//path//where u want to save your log";
try {
   bw = new BufferedWriter(new FileWriter(new File(path)));
 }

并在您的代码中。

try
{
 .......
 }
catch(exception e)
{
   bw.write("here the file should be created");
   bw.flush();
}

答案 2 :(得分:0)

Logging Frameworks可以帮助您维护日志文件。

如果您不想使用它们,您可以设计自己的日志记录机制 写入文本文件。

如果是log4j:

 1. You can set the logging levels like debug,error,info etc...

 2. You can set appenders like File Appender, Console Appender etc..

这两件事可能满足你的需要。

答案 3 :(得分:0)

您仍然需要运行一些将所需信息附加到(日志)文件的代码。因此,最后您将拥有一个 logger 类,它提供一些静态方法,如 logException logError 。这是一个微不足道的草案:

public class MyLogger {

   public static log(Object sender, Throwable e) {
     String className = sender;
     String message = e.getMessage();
     append(sender, message);
   }

   private static void append(String classname, String message) {
     // append something to your file
   }
}

您可能想要添加时间戳和一些行号信息,这些信息可从Thread.currentThread().getStackTrace()[n]获得(使用n的值,直到您从调用方法中找到帧,它是2,3或4)< / p>

然后,每当处理异常时,请执行

catch(SomeException e) {
   MyLogger.log(this, e);
}