我有一个动态网络应用程序。我在spring环境中工作,使用maven和mybatis。我在tomcat上部署了一个war文件。我正在使用 log4j 记录数据。我希望每个人都可以实时访问这些数据。例如,如果网络应用程序的主页是,localhost:8080
那么我想要类似 localhost:8080/logs 的东西来实时显示日志。我知道我必须为此向 Spring 请求映射。但是当我的文件不断自我更新时,我不知道如何使它工作。
任何帮助表示赞赏
如果是spring mvc。
在您的控制器中,您需要读取文件并将其写入响应中。
这实际上很简单。
代码片段供您参考:以下是 SUDO 代码。只为给你方向
@RequestMapping("/log") 公共类控制器 {
public void readLog(HttpRequest req, HttpResponse resp) {
File file = new File('YOUR_FILE_LOCATION')
FileReader fr = new FileReader(file);
// you can read every line for the log file and write into resposne
while(str = nextLine()) {
resp.println(str)
}
fr.close()
}
}
您可以使用 log4j 的 HTML 布局功能,如下所示:
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${catalina.base}/webapps/yourappname/log.html
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILE.layout.Title=HTML logs
log4j.appender.FILE.layout.LocationInfo=true
该文件应该可以在http://localhost:8080/yourappname/log.html
. Tomcat 将提供 catalina.base/catalina.home 作为系统属性,或者您可以提供完整的文件路径。