Аудит#
Java API, позволяющее фиксировать в системе аудита события, совершаемые в контексте плагина.
Варианты использования#
аудит событий, изменяющих состояние системы
Подключение#
подключите spring bean -
@Autowired ru.sbt.swtr.track.core.audit.api.AuditServiceфиксируйте события через java api -
ru.sbt.swtr.track.core.audit.api.AuditService
Рекомендуемые события#
Рекомендуется фиксировать как успешные, так и не успешные попытки совершения события аудита:
создание объектов в БД
изменение объектов в БД
удаление объектов из БД
Пример#
REST API по загрузке данных
public class ExampleRestApi implements CustomRestApi { private static final String PLUGIN_QUALIFIER = "example"; @Autowired private AuditService auditService; @Autowired private SaveDirectoryValueDao saveDirectoryValueDao; @PutMapping(path = "/example/create/new/item", consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) public ResponseEntity<String> job(@RequestBody AnyItem body) { try { saveDirectoryValueDao.save(body); auditService.audit(new AuditEvent() { @Override public String getTitle() { return "my custom event"; } @Override public String getObject() { return AnyItem.class; } @Override public EventStatus getStatus() { return EventStatus.SUCCESS; } @Override public Object newValue() { return body; } }); } catch (Exception ex) { auditService.audit(new AuditEvent() { @Override public String getTitle() { return "my custom event"; } @Override public String getObject() { return AnyItem.class; } @Override public EventStatus getStatus() { return EventStatus.FAIL; } @Override public Collection<String> messages() { return Set.of(ex.getMessage()); } }); return ResponseEntity.ok("fail"); } return ResponseEntity.ok("success"); } }
Использование#
Инициируйте событие
curl -X PUT --location "http://localhost:8080/swtr/extension/plugin/v2/rest/api//example/create/new/item" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -d "{ \"name\": \"test\" }Событие зафиксировано в LOG_AUDIT_FILE:audit.log
{ "eventdate": "2023-07-27T15:09:20.014+03:00", "@version": "1", "source_message": "my custom event::1 SUCCESS", "logger_name": "swtr-app-audit", "thread_name": "auto_Worker-14", "level": "INFO", "level_value": 20000, "user_ip":"127.0.0.1", "id":"a1fd18d4-057e-4ad0-97f3-ad9fafab9992", "event": "my custom event", "format_version": 1, "status": "SUCCESS", "object": "1", "object_type": "AnyItem", "internal_id": "3a78d572-5b89-4229-a59d-4f01ad737178", "username": "user", "userfio": "Иванов Иван Иванович", "oldvalue": null, "newvalue": "name: \"test\"", "messages": null, "tier": "LOCAL-EXAMPLE", "subsystem": "swtr-core", "host.ip": "127.0.0.1", "host.name": "localhost" }