1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.audit;
35
36 import info.magnolia.objectfactory.Components;
37
38 import java.util.ArrayList;
39 import java.util.Iterator;
40 import java.util.List;
41
42 import org.apache.commons.lang3.StringUtils;
43 import org.apache.logging.log4j.LogManager;
44 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory;
46
47
48
49
50 public class AuditLoggingManager {
51
52 private List<LogConfiguration> logConfigurations = new ArrayList<LogConfiguration>();
53
54 private String defaultSeparator = ", ";
55
56 private static Logger applog = LoggerFactory.getLogger(AuditLoggingManager.class);
57
58 public static AuditLoggingManager getInstance() {
59 try {
60 return Components.getComponent(AuditLoggingManager.class);
61 } catch (Exception e) {
62
63 applog.info("Class AuditLoggingManager not defined");
64 return null;
65 }
66 }
67
68 public void addLogConfigurations(LogConfiguration action) {
69 this.logConfigurations.add(action);
70 }
71
72 public List<LogConfiguration> getLogConfigurations() {
73 return logConfigurations;
74 }
75
76 public void setLogConfigurations(List<LogConfiguration> logConfigurations) {
77 this.logConfigurations = logConfigurations;
78 }
79
80 public LogConfiguration getLogConfiguration(String action) {
81 Iterator<LogConfiguration> iterator = this.logConfigurations.iterator();
82 while (iterator.hasNext()) {
83 final LogConfiguration trail = iterator.next();
84 if (StringUtils.equals(trail.getName(), action)) {
85 return trail;
86 }
87 }
88 return null;
89 }
90
91
92
93
94 public boolean isAuditLoggingActive() {
95 Iterator<LogConfiguration> iterator = this.logConfigurations.iterator();
96 while (iterator.hasNext()) {
97 final LogConfiguration trail = iterator.next();
98 if (trail.isActive()) {
99 return true;
100 }
101 }
102 return false;
103 }
104
105 public void log(String action, String[] data) {
106 StringBuilder message = new StringBuilder();
107 LogConfiguration trail = this.getLogConfiguration(action);
108 if (trail == null) {
109 applog.trace("Can't get log configuration");
110 } else {
111 String separator = defaultSeparator;
112 if (!StringUtils.isEmpty(trail.getSeparator())) {
113 separator = trail.getSeparator();
114 }
115 message.append(separator).append(action);
116 if (trail.isActive()) {
117 for (int i = 0; i < data.length; i++) {
118 if (StringUtils.isNotEmpty(data[i])) {
119 message.append(separator).append(data[i]);
120 }
121
122 }
123 LogManager.getLogger(trail.getLogName()).log(LoggingLevel.AUDIT_TRAIL, message.toString());
124 }
125 }
126 }
127
128 public String getDefaultSeparator() {
129 return defaultSeparator;
130 }
131
132 public void setDefaultSeparator(String defaultSeparator) {
133 this.defaultSeparator = defaultSeparator;
134 }
135 }