0

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

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

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

4

3 回答 3

2

您可以创建一个 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 框架。

于 2012-11-22T20:43:36.743 回答
0

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

于 2012-11-22T19:51:02.117 回答
0

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

于 2019-03-08T06:21:22.273 回答