2

我是 java 新手,并试图通过示例学习如何记录异常。我在这里找到了以下示例代码:

http://www.kodejava.org/examples/447.html

但是,我没有看到指定日志文件的文件名的位置。当我在 Google 上研究这个问题时,人们通常会参考用于编程 java 的框架来确定日志文件的存储位置。但是,我没有使用框架。我只是从命令行使用 VIM 编辑器创建我的 java 文件。该 java 文件位于 Linux CentOS 应用服务器上,并从客户端的浏览器中调用。

问题 1:是否可以修改下面的示例以包含用于记录的文件名和路径?或者,我对这个问题有什么误解吗?

问题2:即使我记录了异常,它仍然会传播到客户端供用户查看吗?希望它会,否则用户不会知道发生了错误。

package org.kodejava.example.util.logging;

import java.util.logging.Logger;
import java.util.logging.Level;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;

public class LoggingException {
private static Logger logger = Logger.getLogger(LoggingException.class.getName());

public static void main(String[] args) {
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    df.setLenient(false);

    try {
        //
        // Try to parsing a wrong date.
        //
        Date date = df.parse("12/30/1990");

        System.out.println("Date = " + date);
    } catch (ParseException e) {
        //
        // Create a Level.SEVERE logging message
        //
        if (logger.isLoggable(Level.SEVERE)) {
            logger.log(Level.SEVERE, "Error parsing date", e);
        }
    }
}
}
4

3 回答 3

2

尝试这个:

try {
    FileHandler handler = new FileHandler("myLogFile.log", true);
    Logger logger = Logger.getLogger(LoggingException.class.getName());
    logger.addHandler(handler);
} catch (IOException e) {
    logger.log(Level.SEVERE, "Error parsing date", e);
}

默认情况下,文件处理程序会在每次创建日志文件时覆盖其内容。您可能还想附加日志文件,因此在 FileHandler 构造函数中您需要指定true为第二个参数。

希望这可以帮助。

编辑:

package org.kodejava.example.util.logging;

import java.util.logging.Logger;
import java.util.logging.Level;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;

public class LoggingException {
private static Logger logger = Logger.getLogger(LoggingException.class.getName());

public static void main(String[] args) {
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    df.setLenient(false);
    FileHandler handler = new FileHandler("myLogFile.log", true);
    logger.addHandler(handler);
    try {
        //
        // Try to parsing a wrong date.
        //
        Date date = df.parse("12/30/1990");

        System.out.println("Date = " + date);
    } catch (ParseException e) {
        //
        // Create a Level.SEVERE logging message
        //
        if (logger.isLoggable(Level.SEVERE)) {
            logger.log(Level.SEVERE, "Error parsing date", e);
        }
    }
  }
}

这应该有效。我没有测试它。更有效的方法是创建一个方法来初始化记录器并向其添加处理程序。但我主要建议您考虑使用log4j. 它易于设置和广泛使用的日志框架。

于 2012-06-07T19:33:42.957 回答
1

在配置中为记录器添加文件处理程序。链接:http ://www.crazysquirrel.com/computing/java/logging.jspx

handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler

最好使用 log4j。它是一个很好的日志框架。

于 2012-06-07T19:36:56.860 回答
1

您需要一个附加到日志的 FileHandler,您可以在初始化的某个位置手动添加它,或者使用 .properties 文件配置您的日志记录。

(ps 本例中的 isLoggable 调用是多余的,只会使代码膨胀)

于 2012-06-07T19:33:33.773 回答