1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.fit.core.reference;
20
21 import java.io.File;
22 import java.util.HashSet;
23 import java.util.Set;
24 import org.apache.commons.lang3.StringUtils;
25 import org.apache.logging.log4j.LogManager;
26 import org.apache.logging.log4j.core.LoggerContext;
27 import org.apache.logging.log4j.core.appender.FileAppender;
28 import org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender;
29 import org.apache.logging.log4j.core.layout.PatternLayout;
30 import org.apache.syncope.common.lib.types.AuditElements;
31 import org.apache.syncope.common.lib.types.AuditLoggerName;
32 import org.apache.syncope.core.logic.ConnectorLogic;
33 import org.apache.syncope.core.logic.ResourceLogic;
34 import org.apache.syncope.core.logic.audit.DefaultAuditAppender;
35
36 public class TestFileAuditAppender extends DefaultAuditAppender {
37
38 public TestFileAuditAppender(final String domain) {
39 super(domain);
40
41 LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
42
43 RollingRandomAccessFileAppender main =
44 (RollingRandomAccessFileAppender) ctx.getConfiguration().getAppender("main");
45
46 String pathPrefix = main == null
47 ? System.getProperty("user.dir") + StringUtils.replace("/target/log", "/", File.separator)
48 + File.separator
49 : StringUtils.replace(main.getFileName(), "core.log", StringUtils.EMPTY);
50
51 targetAppender = FileAppender.newBuilder().
52 setName(getTargetAppenderName()).
53 withAppend(true).
54 withFileName(pathPrefix + getTargetAppenderName() + ".log").
55 setLayout(PatternLayout.newBuilder().
56 withPattern("%d{HH:mm:ss.SSS} %-5level %logger - %msg%n").
57 build()).
58 build();
59 }
60
61 @Override
62 public Set<AuditLoggerName> getEvents() {
63 Set<AuditLoggerName> events = new HashSet<>();
64 events.add(new AuditLoggerName(
65 AuditElements.EventCategoryType.LOGIC,
66 ResourceLogic.class.getSimpleName(),
67 null,
68 "create",
69 AuditElements.Result.SUCCESS));
70 events.add(new AuditLoggerName(
71 AuditElements.EventCategoryType.LOGIC,
72 ConnectorLogic.class.getSimpleName(),
73 null,
74 "update",
75 AuditElements.Result.SUCCESS));
76 return events;
77 }
78
79 @Override
80 public String getTargetAppenderName() {
81 return "audit_for_" + domain + "_norewrite_file";
82 }
83 }