【问题标题】:Java - Need a logging package that will log the stacktraceJava - 需要一个记录堆栈跟踪的日志包
【发布时间】:2010-02-25 06:26:09
【问题描述】:

是否有一个 Logger 可以轻松记录我的堆栈跟踪(我得到的 ex.printStackTrace())?我搜索了 log4j 文档,一无所获 关于记录堆栈跟踪。

我可以自己做

StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
String stacktrace = sw.toString();
logger.error(stacktrace);

但我不想到处复制这段代码。

如果 log4j 不会为我执行此操作,是否还有另一个日志包可以 为我记录堆栈跟踪?

谢谢。

【问题讨论】:

    标签: java logging


    【解决方案1】:

    使用log4j 完成:

    logger.error("An error occurred", exception);
    

    第一个参数是要显示的消息,第二个参数是记录堆栈跟踪的异常(可抛出)。

    另一个选项是commons-logging,它是一样的:

    log.error("Message", exception);
    

    使用java.util.logging 可以通过以下方式完成:

    logger.log(Level.SEVERE, "Message", exception);
    

    【讨论】:

    • 有任何标准工具来记录堆栈跟踪吗?有时我只是不知道(或想要)在消息中添加什么
    【解决方案2】:

    java.util.logging,您可以使用自定义日志格式化程序初始化记录器,如下所示:

    private Logger initTextLogger() throws SecurityException, IOException {
            Logger logger = Logger.getLogger(YourClass.class.getName());
            FileHandler fileHandler = new FileHandler(logFilePath, false);
            SimpleFormatter logFormatter = new SimpleFormatter() {
                @Override
                public String format(LogRecord record) {
                String stacktrace = "";
                Throwable t = record.getThrown();
                if(t!=null){
                    StringWriter sw = new StringWriter();
                    t.printStackTrace(new PrintWriter(sw));
                    stacktrace = sw.toString();
                }               
                return record.getLevel() + ": " + record.getMessage() + "\r\n"
                        + stacktrace;
            }
            };
            fileHandler.setFormatter(logFormatter);
            logger.addHandler(fileHandler);
    
            return logger;
        }
    

    【讨论】:

      猜你喜欢
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2023-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多