diff options
author | Stan Hu <stanhu@gmail.com> | 2018-10-18 22:50:21 +0300 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-10-19 01:59:12 +0300 |
commit | 143d0e26664e85be9382d1b1f8e99ead96e5d642 (patch) | |
tree | 304f621e9a8fc1fc12849212cd59a1d7b79f2456 /app | |
parent | 5edf87d0ac699575421ec96cbc0fc91ea0c3c078 (diff) |
Add support for JSON logging for audit events
This will add audit_json.log that writes one line per audit event. For
example:
{
"severity":"INFO",
"time":"2018-10-17T17:38:22.523Z",
"author_id":3,
"entity_id":2,
"entity_type":"Project",
"change":"visibility",
"from":"Private",
"to":"Public",
"author_name":"John Doe4",
"target_id":2,
"target_type":"Project",
"target_details":"namespace2/project2"
}
Diffstat (limited to 'app')
-rw-r--r-- | app/services/audit_event_service.rb | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/app/services/audit_event_service.rb b/app/services/audit_event_service.rb index 4c5e22bdd7e..201048aaba5 100644 --- a/app/services/audit_event_service.rb +++ b/app/services/audit_event_service.rb @@ -17,11 +17,29 @@ class AuditEventService end def security_event - SecurityEvent.create( + log_security_event_to_file + log_security_event_to_database + end + + private + + def base_payload + { author_id: @author.id, entity_id: @entity.id, - entity_type: @entity.class.name, - details: @details - ) + entity_type: @entity.class.name + } + end + + def file_logger + @file_logger ||= Gitlab::AuditJsonLogger.build + end + + def log_security_event_to_file + file_logger.info(base_payload.merge(@details)) + end + + def log_security_event_to_database + SecurityEvent.create(base_payload.merge(details: @details)) end end |