我使用Tomcat 7.x作为我的Web服务器,我使用java.util.logging和JULI进行日志记录。此Tomcat服务器托管一个运行Ubuntu的Amazon EC2实例。
问题是每当我希望看到日志时(在catalina.log文件中)我经历了一个非常耗时的复制,chowing然后将文件下载到本地机器的过程,然后才能看到它们。 (我可以使用像nano或vi这样的实用程序,但它们没有多大帮助)
我的问题我可以自动将日志导出到某个外部服务器并立即查看。有些东西类似于Android中的ACRA报告的Bugsense。
您可以创建一个在Tomcat中运行的servlet来读取日志并在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框架。
rsync然后定期在您想要的服务器上使用cron作业或使用像collectd这样的工具。
您可以使用logstash或流利的流式传输日志并加载到您喜欢的目标中,比如Elastic Search。您可以使用Kibana或Graylog等可视化工具可视化或搜索elasticsearch中的日志