1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.logic.audit;
20
21 import java.util.Optional;
22 import org.apache.logging.log4j.LogManager;
23 import org.apache.logging.log4j.core.Appender;
24 import org.apache.logging.log4j.core.LoggerContext;
25 import org.apache.syncope.ext.elasticsearch.client.ElasticsearchIndexManager;
26
27 public class ElasticsearchAuditAppender extends DefaultAuditAppender {
28
29 public ElasticsearchAuditAppender(final String domain, final ElasticsearchIndexManager elasticsearchIndexManager) {
30 super(domain);
31
32 LoggerContext logCtx = (LoggerContext) LogManager.getContext(false);
33
34 targetAppender = Optional.ofNullable(logCtx.getConfiguration().<Appender>getAppender(getTargetAppenderName())).
35 orElseGet(() -> {
36 ElasticsearchAppender a = ElasticsearchAppender.newBuilder().
37 setName(getTargetAppenderName()).
38 setIgnoreExceptions(false).
39 setDomain(domain).
40 setIndexManager(elasticsearchIndexManager).
41 build();
42 a.start();
43 logCtx.getConfiguration().addAppender(a);
44 return a;
45 });
46 }
47
48 @Override
49 public String getTargetAppenderName() {
50 return "audit_for_" + domain;
51 }
52 }