1
2
3
4
5
6
7
8
9
10
11 package psiprobe.controllers.logs;
12
13 import jakarta.inject.Inject;
14 import jakarta.servlet.http.HttpServletRequest;
15 import jakarta.servlet.http.HttpServletResponse;
16
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
19 import org.springframework.web.bind.ServletRequestUtils;
20 import org.springframework.web.servlet.ModelAndView;
21 import org.springframework.web.servlet.mvc.ParameterizableViewController;
22
23 import psiprobe.beans.LogResolverBean;
24 import psiprobe.tools.logging.LogDestination;
25
26
27
28
29 public abstract class AbstractLogHandlerController extends ParameterizableViewController {
30
31
32 private static final Logger logger = LoggerFactory.getLogger(AbstractLogHandlerController.class);
33
34
35 @Inject
36 protected LogResolverBean logResolver;
37
38 @Override
39 protected ModelAndView handleRequestInternal(HttpServletRequest request,
40 HttpServletResponse response) throws Exception {
41
42 String logType = ServletRequestUtils.getStringParameter(request, "logType");
43 String webapp = ServletRequestUtils.getStringParameter(request, "webapp");
44 boolean context = ServletRequestUtils.getBooleanParameter(request, "context", false);
45 boolean root = ServletRequestUtils.getBooleanParameter(request, "root", false);
46 String logName = ServletRequestUtils.getStringParameter(request, "logName");
47 String logIndex = ServletRequestUtils.getStringParameter(request, "logIndex");
48
49 LogDestination dest =
50 logResolver.getLogDestination(logType, webapp, context, root, logName, logIndex);
51
52 ModelAndView modelAndView = null;
53 boolean logFound = false;
54 if (dest != null) {
55 if (dest.getFile() != null && dest.getFile().exists()) {
56 modelAndView = handleLogFile(request, response, dest);
57 logFound = true;
58 } else {
59 logger.error("{}: file not found", dest.getFile());
60 }
61 } else {
62 logger.error("{}{} log{} not found", logType, root ? " root" : "",
63 root ? "" : " '" + logName + "'");
64 }
65 if (!logFound) {
66 response.sendError(404);
67 }
68 return modelAndView;
69 }
70
71
72
73
74
75
76
77
78
79
80
81
82 protected abstract ModelAndView handleLogFile(HttpServletRequest request,
83 HttpServletResponse response, LogDestination logDest) throws Exception;
84
85 }