有没有一种方法可以在浏览器中实时查看我的Web应用程序tomcat日志? [英] Is there a way to view my web-apps tomcat logs in a browser real time?
本文介绍了有没有一种方法可以在浏览器中实时查看我的Web应用程序tomcat日志?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用log4j记录我的数据.我希望能够在浏览器中与Web应用程序一起实时查看日志文件.有诸如Chainsaw之类的独立工具非常不错,但是它们不能满足在浏览器中实时查看日志的目的.
I am using log4j to log my data. I wan to be able to view the log files realtime alongside my web-app in a browser. There are standalone tools like Chainsaw which are quite good, but they don't serve the purpos eof viewing logs real-time in a browser.
有人可以帮我吗?
推荐答案
一个简单的例子是:
Servlet(根据需要更改日志文件的路径):
Servlet (change path of log file as needed):
@WebServlet(name = "Log", urlPatterns = { "/log" })
public class LogServlet extends HttpServlet {
private static final long serialVersionUID = 7503953988166684851L;
public LogServlet() {
super();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Path path = FileSystems.getDefault()
.getPath("/path/to/tomcat/logs", "catalina.out");
StringBuilder logContent = new StringBuilder();
logContent.append("<pre>");
try (BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8);) {
String line = null;
while ((line = reader.readLine()) != null) {
logContent.append(line).append("<br/>");
}
} catch (IOException x) {
// Take care of that
}
logContent.append("</pre>");
resp.getWriter().print(logContent.toString());
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
}
}
HTML页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Log viewer</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>window.jQuery || document.write(unescape('%3Cscript src="http://jquery.com/jquery-wp-content/themes/jquery/js/jquery-1.10.2.min.js"%3E%3C/script%3E'))
</script>
<script type="text/javascript">
var logging = false;
function refreshLog() {
if (logging) {
$.get('/log', function(data) {
$('#log').html(data);
});
}
if (logging) {
setTimeout(function() {
refreshLog()
}, 5000);
}
}
function toggleLogs() {
if (logging) {
logging = false;
$("#tog").val("Start");
} else {
logging = true;
$("#tog").val("Stop");
refreshLog();
}
}
</script>
</head>
<body style="width: 100%; padding: 0; margin: 0">
<input type="button" id="tog" onclick="toggleLogs()" value="Start" />
<div id="log" style="width: 100%; padding: 0; margin: 0"></div>
</body>
</html>
这篇关于有没有一种方法可以在浏览器中实时查看我的Web应用程序tomcat日志?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文