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.slf4j.Logger;
44 import org.slf4j.LoggerFactory;
45
46
47
48
49 public class AuditLoggingManager {
50
51 private List<LogConfiguration> logConfigurations = new ArrayList<LogConfiguration>();
52
53 private String defaultSeparator = ", ";
54
55 private static Logger applog = LoggerFactory.getLogger(AuditLoggingManager.class);
56
57 public static AuditLoggingManager getInstance() {
58 try {
59 return Components.getComponent(AuditLoggingManager.class);
60 } catch (Exception e) {
61
62 applog.info("Class AuditLoggingManager not defined");
63 return null;
64 }
65 }
66
67 public void addLogConfigurations(LogConfiguration action) {
68 this.logConfigurations.add(action);
69 }
70
71 public List<LogConfiguration> getLogConfigurations() {
72 return logConfigurations;
73 }
74
75 public void setLogConfigurations(List<LogConfiguration> logConfigurations) {
76 this.logConfigurations = logConfigurations;
77 }
78
79 public LogConfiguration getLogConfiguration(String action) {
80 Iterator<LogConfiguration> iterator = this.logConfigurations.iterator();
81 while (iterator.hasNext()) {
82 final LogConfiguration trail = iterator.next();
83 if (StringUtils.equals(trail.getName(), action)) {
84 return trail;
85 }
86 }
87 return null;
88 }
89
90
91
92
93 public boolean isAuditLoggingActive() {
94 Iterator<LogConfiguration> iterator = this.logConfigurations.iterator();
95 while (iterator.hasNext()) {
96 final LogConfiguration trail = iterator.next();
97 if (trail.isActive()) {
98 return true;
99 }
100 }
101 return false;
102 }
103
104 public void log(String action, String[] data) {
105 StringBuilder message = new StringBuilder();
106 LogConfiguration trail = this.getLogConfiguration(action);
107 if (trail == null) {
108 applog.trace("Can't get log configuration");
109 } else {
110 String separator = defaultSeparator;
111 if (!StringUtils.isEmpty(trail.getSeparator())) {
112 separator = trail.getSeparator();
113 }
114 message.append(separator).append(action);
115 if (trail.isActive()) {
116 for (int i = 0; i < data.length; i++) {
117 if (StringUtils.isNotEmpty(data[i])) {
118 message.append(separator).append(data[i]);
119 }
120
121 }
122 org.apache.log4j.Logger.getLogger(trail.getLogName()).log(LoggingLevel.AUDIT_TRAIL, message.toString());
123 }
124 }
125 }
126
127 public String getDefaultSeparator() {
128 return defaultSeparator;
129 }
130
131 public void setDefaultSeparator(String defaultSeparator) {
132 this.defaultSeparator = defaultSeparator;
133 }
134 }