如何将JAVA Webservice记录到文件中

时间:2015-08-03 06:56:57

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

我使用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。代码只是进行了数据库查询并发送结果。

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

希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

每次调用方法时都不应初始化文件处理程序。也许你应该使它静态或在构造函数中初始化它。另见附录。