Wiki-Quellcode von Log Application Macros

Zuletzt geändert von Marcel Endberg am 29 April 2026, 12:14

Zeige letzte Bearbeiter
1 {{velocity output="false"}}
2 #set($logDefaultDoc = $xwiki.getDocument("Log.WebHome"))
3 #set($logClassname = "Log.LogEntryClass")
4 ##
5 ## Creates an log entry
6 ##
7 #macro(log $message $level $containerdoc)
8 #if("$!containerdoc" != "")
9 #set($logDoc = $xwiki.getDocument("$containerdoc"))
10 #if($logDoc.isNew())
11 #set($void = $logDoc.setContent("{{include document=${escapetool.q}Log.LogSheet${escapetool.q}/}}"))
12 #end
13 #else
14 #set($logDoc = $logDefaultDoc)
15 #end
16 #set($logObj = $logDoc.newObject($logClassname))
17 #set($void = $logObj.set("message", $message))
18 #set($void = $logObj.set("timestamp", $datetool.date))
19 #set($void = $logObj.set("contextUser", $context.user))
20 #set($void = $logObj.set("contextDoc", $doc.fullName))
21 #set($void = $logObj.set("contextAction", $context.action))
22 #set($requestParams = "")
23 #set($paramNames = $request.parameterNames)
24 #foreach($paramName in $paramNames)
25 #if($velocityCount > 1) #set($requestParams = "${requestParams}, ") #end
26 #set($paramValues = $request.getParameterValues("$paramName"))
27 #set($paramValue = "")
28 #foreach($value in $paramValues)
29 #if($velocityCount > 1) #set($paramValue = "$!{paramValue}, ") #end
30 #set($paramValue = "$!{paramValue}${value}")
31 #end
32 #set($paramValue = "[${paramValue}]")
33 #set($requestParams = "${requestParams}${paramName}:${paramValue}")
34 #end
35 #if("$!requestParams" == "")
36 #set($requestParams = "[:]")
37 #else
38 #set($requestParams = "[${requestParams}]")
39 #end
40 #set($void = $logObj.set("requestParams", "$requestParams"))
41 #if("$!level" != "")
42 #if($level == "INFO")
43 #set($void = $logObj.set("level", "0"))
44 #elseif($level == "WARN")
45 #set($void = $logObj.set("level", "1"))
46 #elseif($level == "ERROR")
47 #set($void = $logObj.set("level", "2"))
48 #else
49 #set($void = $logObj.set("level", "$level"))
50 #end
51 #else
52 #set($void = $logObj.set("level", "0"))
53 #end
54 #set($ok = $logDoc.saveAsAuthor())
55 #end
56 ##
57 #macro(loginfo $message $containerdoc)
58 #log($message "0" $containerdoc)
59 #end
60 ##
61 #macro(logwarn $message $containerdoc)
62 #log($message "1" $containerdoc)
63 #end
64 ##
65 #macro(logerror $message $containerdoc)
66 #log($message "2" $containerdoc)
67 #end
68 ##
69 ## Removes all log entries
70 ##
71 #macro(clearlogs $containerdoc)
72 #if("$!containerdoc" != "")
73 #set($logDoc = $xwiki.getDocument("$containerdoc"))
74 #else
75 #set($logDoc = $logDefaultDoc)
76 #end
77 $logDoc.removeObjects($logClassname)
78 $logDoc.saveAsAuthor()
79 #end
80 {{/velocity}}
81 {{groovy}}
82 def logDefaultDoc = "Log.WebHome";
83 def logClassname = "Log.LogEntryClass";
84 def log(message, level, containerdoc) {
85 def logDoc = xwiki.getDocument(containerdoc);
86 if(logDoc.isNew()) {
87 logDoc.setContent("{{include document=\"Log.LogSheet\"/}}")
88 }
89 def logObj = logDoc.newObject("Log.LogEntryClass");
90 logObj.set("message", message);
91 logObj.set("timestamp", new Date());
92 logObj.set("level", level);
93 logObj.set("contextUser", xcontext.getUser());
94 logObj.set("contextDoc", doc.getFullName());
95 logObj.set("contextAction", xcontext.getAction())
96 logObj.set("requestParams", request.parameterMap.toString());
97 logDoc.saveAsAuthor();
98 }
99 def log(message) {
100 log(message, "0", "Log.WebHome")
101 }
102 def loginfo(message) {
103 log(message, "0", "Log.WebHome")
104 }
105 def logwarn(message) {
106 log(message, "1", "Log.WebHome")
107 }
108 def logerror(message) {
109 log(message, "2", "Log.WebHome")
110 }
111 def loginfo(message, containerdoc) {
112 log(message, "0", containerdoc)
113 }
114 def logwarn(message, containerdoc) {
115 log(message, "1", containerdoc)
116 }
117 def logerror(message, containerdoc) {
118 log(message, "2", containerdoc)
119 }
120 def clearlogs(containerdoc) {
121 def logDoc;
122 if(containerdoc != "") {
123 logDoc = $xwiki.getDocument("$containerdoc")
124 } else {
125 logDoc = "Log.WebHome"
126 }
127 logDoc.removeObjects("Log.LogEntryClass")
128 logDoc.saveAsAuthor()
129 }
130 {{/groovy}}