【问题标题】:Export Tomcat Catalina Logs to external server将 Tomcat Catalina 日志导出到外部服务器
【发布时间】:2012-11-22 19:41:06
【问题描述】:

我使用 Tomcat 7.x 作为我的 Web 服务器,我使用 java.util.logging 和 JULI 进行日志记录。此 Tomcat 服务器托管一个运行 Ubuntu 的 Amazon EC2 实例。

问题是每当我希望查看日志(在 catalina.log 文件中)时,我都经历了一个非常耗时的过程,即复制、咀嚼然后将文件下载到我的本地机器我可以看到他们。 (我可以使用 nano 或 vi 等实用程序,但它们没有多大帮助)

我的问题我可以自动将日志导出到某个外部服务器并立即查看它们吗?类似于 Bugsense for ACRA 报告在 Android 中的一些东西。

【问题讨论】:

  • 使用less命令查看日志文件更方便。比记事本或类似的东西更方便。你只需要习惯。您需要的一切:向上/向下滚动页面、滚动光标和搜索

标签: java android tomcat logging


【解决方案1】:

您可以创建一个 servlet 以在 Tomcat 中运行以读取日志并将它们显示在您的 Web 浏览器中。或者,如果文件很大,请将其压缩并允许您下载。

使用环境变量catalina.base确定基本目录,然后收集logs/catalina.log。

[更新]

最佳方法取决于您的背景。如果您愿意做一个简单的基本 servlet,请以 the simplest design that could possibly work 开头,例如:

class LogServlet extends HttpServlet
{
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
   {
      File logFile = new File(System.getProperty("catalina.base"), "logs/catalina.log");
      String contents = FileUtils.readFileToString(logFile);
      PrintWriter out = new PrintWriter(resp.getOutputStream());
      out.println(contents);
   }
}

我正在使用 commons-io 来简化读取日志文件,否则它只是 Java servlet 框架。

【讨论】:

  • +1,Idea 对我来说似乎可行,任何图书馆、博客或建议如何去做。
  • 查看更新。我们使用上面的 servlet 方法来做类似的事情。
  • 我会实现的。任何建议的库。
  • 好的,我将把这个问题再开放一天,寻找其他贡献者。
【解决方案2】:

rsync 然后定期在您想要的服务器上使用 cron 作业或使用诸如 collectd 之类的工具。

【讨论】:

    【解决方案3】:

    您可以使用 logstash 或 fluentd 流式传输日志并加载到您喜欢的目标中,例如 Elastic Search。您可以使用 Kibana 或 Graylog 等可视化工具从 elasticsearch 中可视化或搜索日志

    【讨论】:

    猜你喜欢
    • 2020-04-03
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多