0

我有一个动态网络应用程序。我在spring环境中工作,使用maven和mybatis。我在tomcat上部署了一个war文件。我正在使用 log4j 记录数据。我希望每个人都可以实时访问这些数据。例如,如果网络应用程序的主页是,localhost:8080那么我想要类似 localhost:8080/logs 的东西来实时显示日志。我知道我必须为此向 Spring 请求映射。但是当我的文件不断自我更新时,我不知道如何使它工作。

任何帮助表示赞赏

4

2 回答 2

4

如果是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()  

}

}

于 2013-08-15T07:20:50.843 回答
1

您可以使用 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 作为系统属性,或者您可以提供完整的文件路径。

于 2013-08-15T09:10:25.513 回答