Spring:如何向用户显示日志消息?

时间:2017-02-02 12:04:04

标签: spring log4j

在我的Spring / Hibernate / MVC应用程序中,我实现了一些长时间运行的函数。在这种情况下,我想告知用户状态。

我想知道,如果我可以向前端获取某些log4j消息,例如:

DEBUG d.t.webapp.services.StageServiceImpl - Fetching result
DEBUG d.t.webapp.services.StageServiceImpl - loaded 1000 rows
DEBUG d.t.webapp.services.StageServiceImpl - loaded 1000 rows
DEBUG d.t.webapp.services.StageServiceImpl - loaded 1000 rows
DEBUG d.t.webapp.services.StageServiceImpl - loaded 994 rows

这些消息应该逐步出现在前端,因为它们是由后端产生的,具有最小的延迟。这是否可能或有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

或者为什么不使用这样的东西:

1#创建一个控制器,为您提供工作人员的最后状态

@RestController
@RequestMapping(value = "/worker")
public WorkerStatusProviderController {

    @Autowired
        WorkerStatusProvider workerStatusProvider;

    @RequestMapping(value = "/status/{id}", method = RequestMethod.GET)
    public new ResponseEntity<WorkerStatus> getStatus(@PathVariable("id") long workerId){

        //retrieve last worker status
        WorkerStatus lastStatus = workerStatusProvider.getLastStatus(workerId);

        //send worker status to front
        return new ResponseEntity<WorkerStatus>(lastStatus, HttpStatus.OK);
    }
}

2#在前端使用Ajax每隔2或3秒调用一次该控制器,并向用户显示最后一个状态。

//call /worker/status/id every 2 seconds
setInterval(function(){
    $.get("/worker/status/100", function(workerStatus, status) {

        //display worker status to the user
        alert("workerStatus: " + workerStatus);

    });
}, 2000);