【问题标题】:How to log JAVA Webservice to a file如何将 JAVA Webservice 记录到文件中
【发布时间】:2015-08-03 06:56:56
【问题描述】:

我使用 JAX-RS (Jersey 2.0) 构建了一个服务,并尝试实现一个记录器,该记录器记录诸如错误之类的事件或请求的结果。工作正常! :) 不幸的是,每次调用服务时它都会创建一个文件,但如果他将它写在一个文件中会很好。

看看我的代码(只是相关部分):

package webservice.feedbacks;

import java.io.IOException;
// imports

@Path("webservice")
public class DeleteFeedback {

Logger logger = Logger.getLogger("Feedbacklogger");
@POST
@Path("/deleteFeedback")
@Consumes(MediaType.APPLICATION_JSON + ";charset=UTF-8")
@Produces("text/plain")
public String setFeedbacks(String incoming){

    FileHandler fh;
    JSONObject jsonObj = new JSONObject(incoming);

    try {
        fh = new FileHandler("D:/Eclipse-Projekte/SmartliveService/logs/DeleteFeedback_log.log");
        logger.addHandler(fh);
        SimpleFormatter formatter = new SimpleFormatter();
        fh.setFormatter(formatter);
        logger.info("----- BEGINN DES PROTOKOLLS -----");
    } catch (SecurityException | IOException e) {e.getMessage();}

    int id = jsonObj.getInt("id");

    String result = executeQuery(id);

    logger.info("----- ENDE DES PROTOKOLLS -----");

    return result;
}

private String executeQuery(int id) {

    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {logger.info("Treiberfehler: " + e.getMessage());}

    Connection con = null;
    Statement stmt = null;

    try{...} catch(SQLException e){
        logger.info("SQL-Fehler: " + e.getMessage());
        return "error";
    } finally {     
        try { if (stmt != null) stmt.close();} catch (Exception e) {logger.info("Das Statement konnte nicht geschlossen werden: " + e.getMessage());};
        try { if (con != null) con.close();} catch (Exception e) {logger.info("Die Verbindung konnte nicht geschlossen werden: " + e.getMessage());};
    }
    return "success";
}
}}

如您所见,我创建了一个FileHandler。我从教程中得到了这个,因为我不像几年前那样熟悉 JAVA。该代码只是进行了数据库查询并发送了结果。

那么,我该如何编写代码以记录到一个文件中,而不是在每次调用接口时都创建一个新文件?

希望有人可以帮助我。

【问题讨论】:

  • 您使用的日志记录错误。使用配置文件而不是编程方式对其进行配置。现在,每次调用该方法时,您都会向记录器添加一个处理程序。
  • 是的。好的。我故意试图获得更多信息。也许您可以从 java-docs 或其他我可以查看的资源中发布链接。但感谢您的反馈。 :)
  • 我建议你阅读你正在使用的日志框架的文档。这个问题不是关于网络服务或文件,而是关于你不知道如何正确使用日志框架。
  • 很可能您正在寻找此信息:logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/… 请查看超类中可用的日志方法。
  • @Kayaman:那么请尝试帮助我理解它。您是我们的专家,正如我所说,我从教程中获得了 looging-code!那么请给我来源,我可以在其中阅读有关 Java 日志记录的信息,因为我什至不知道日志记录框架是什么。请不要仅仅因为你是专家就当我什么都不知道的样子对待我。

标签: java web-services rest logging jersey-2.0


【解决方案1】:

您不应该在每次调用方法时都初始化文件处理程序。也许您应该将其设为静态或在构造函数中对其进行初始化。另见附加。

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多