java - 重新部署应用程序时创建的新日志和锁定文件

标签 java jsf logging

我正在登录 JSF 和 ejb 环境,每次重新部署应用程序时,.lck 文件都不会被删除,并且会创建一个新的日志(和锁定)文件(logfilename.log.2、logfilename.lck)。日志.3 ...)

这是我获取日志并在 JSF 托管 bean 中添加文件处理程序的方法:

static {
  // (...)
  logger = Logger.getLogger("registrations");
  FileHandler fh;
  try {
    // (...)
    fh = new FileHandler(registerLogPath, true);
    fh.setFormatter(new Formatter() {

      @Override
      public String format(LogRecord record) {
        return ...
      }  
    });
    logger.addHandler(fh);
  } catch (IOException | SecurityException ex) {
    logger.log(Level.SEVERE, null, ex);
  }
}

我尝试删除 ServletContextListenercontextDestroyed 方法中的处理程序,但似乎为时已晚,因为 Logger.getLogger("registrations") .getHandlers() 返回一个空数组,因此无需删除任何内容。

你能帮助我如何让记录器使用它在重新部署之前使用的文件吗?

最佳答案

我终于成功解决了这个问题。删除处理程序还不够,您必须对处理程序本身调用 close()。此外,logger.getHandlers()contextDestroyed 方法中工作:

for (Handler h : logger.getHandlers()) {
  h.close();
}

关于java - 重新部署应用程序时创建的新日志和锁定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700606/

相关文章:

java - 如何在 Android 中使用 Base64 对字符串进行编码?

java - 如何告诉代理服务器不要缓存响应?

apache - 在此服务器上找不到请求的 URL/application/index.jsf(Apache 和 Tomcat)

logging - 使用 PAX 日志记录时如何消除控制台中的日志记录启动消息?

Python 日志记录。消息具有相同的日期

java - 使用 Java 创建 gettext 二进制 MO 文件

java - 当路径变量中包含点或句点时,为什么我会收到“在 SecurityContext 中找不到身份验证对象”?

JSF 2.0 : Why does a JSF bean get created when it's used in a component that is not rendered?

ajax - OmniFaces Ajax 实用程序的 updateColumn() 未更新 p :dataTable

java - Log4J 每 x 秒记录一次消息?