1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.audit.service.controller;
18
19 import java.util.Map;
20
21 import io.swagger.annotations.ApiImplicitParam;
22 import io.swagger.annotations.ApiImplicitParams;
23 import org.apache.logging.log4j.LogManager;
24 import org.apache.logging.log4j.Logger;
25 import org.apache.logging.log4j.ThreadContext;
26 import org.apache.logging.log4j.audit.AuditLogger;
27 import org.apache.logging.log4j.audit.dto.AuditDto;
28 import org.apache.logging.log4j.catalog.api.Versions;
29 import org.springframework.beans.factory.annotation.Autowired;
30 import org.springframework.http.HttpStatus;
31 import org.springframework.web.bind.annotation.PostMapping;
32 import org.springframework.web.bind.annotation.RequestBody;
33 import org.springframework.web.bind.annotation.ResponseStatus;
34 import org.springframework.web.bind.annotation.RestController;
35
36 import io.swagger.annotations.ApiOperation;
37
38 @RestController
39 public class AuditController {
40
41 private static final Logger LOGGER = LogManager.getLogger();
42
43 @Autowired
44 private AuditLogger auditLogger;
45
46 @ApiImplicitParams( {@ApiImplicitParam(dataType = "String", name = "Authorization", paramType = "header")})
47 @ApiOperation(value = "Generate an Audit event", notes = "Causes an Audit event to be logged", tags = {"Audit"})
48 @PostMapping(value = "/event/log", produces = Versions.V1_0_VALUE)
49 @ResponseStatus(value = HttpStatus.OK)
50 public void logEvent(@RequestBody AuditDto auditDto) {
51 try {
52 Map<String, String> requestContextMap = auditDto.getRequestContextMap();
53 if (requestContextMap != null) {
54 for (Map.Entry<String, String> entry : requestContextMap.entrySet()) {
55 ThreadContext.put(entry.getKey(), entry.getValue());
56 }
57 }
58 auditLogger.logEvent(auditDto.getEventName(), auditDto.getCatalogId(), auditDto.getProperties());
59 } finally {
60 ThreadContext.clearMap();
61 }
62 }
63 }