Skip to content

Commit

Permalink
Revert "switch audit log to splunk only (#3312)" (#3328)
Browse files Browse the repository at this point in the history
This reverts commit 1d8e837.
  • Loading branch information
rin-skylight authored Feb 2, 2022
1 parent 1d8e837 commit b307168
Show file tree
Hide file tree
Showing 11 changed files with 117 additions and 217 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package gov.cdc.usds.simplereport.api;

import gov.cdc.usds.simplereport.config.BeanProfiles;
import gov.cdc.usds.simplereport.db.model.ApiAuditEvent;
import gov.cdc.usds.simplereport.service.AuditService;
import java.util.List;
import org.hibernate.validator.constraints.Range;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.context.annotation.Profile;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

@Endpoint(id = "auditlog")
@Component
@Profile(BeanProfiles.SERVER_DEBUG)
@Validated
public class AuditDebuggingEndpoint {

@Autowired private AuditService _service;

@ReadOperation(produces = "application/json")
public List<ApiAuditEvent> getLatest(
@Nullable @Range(min = 1, max = AuditService.MAX_EVENT_FETCH) Integer count) {
if (count == null) {
count = 1;
}
return _service.getLastEvents(count);
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
package gov.cdc.usds.simplereport.config;

import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.ConsoleAppender;
import gov.cdc.usds.simplereport.db.model.ApiUser;
import gov.cdc.usds.simplereport.service.ApiUserService;
import gov.cdc.usds.simplereport.service.AuditService;
import java.util.Optional;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
Expand All @@ -32,24 +24,4 @@ public AuditorAware<ApiUser> getCurrentApiUserProvider() {
return user;
};
}

@Bean
public Logger jsonLogger(@Value("${logging.pattern.json-log}") String jsonPattern) {
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
PatternLayoutEncoder patternLayoutEncoder = new PatternLayoutEncoder();

patternLayoutEncoder.setPattern(jsonPattern);
patternLayoutEncoder.setContext(loggerContext);
patternLayoutEncoder.start();

ConsoleAppender<ILoggingEvent> consoleAppender = new ConsoleAppender<>();
consoleAppender.setEncoder(patternLayoutEncoder);
consoleAppender.setContext(loggerContext);
consoleAppender.start();

Logger logger = (Logger) LoggerFactory.getLogger(AuditService.class);
logger.addAppender(consoleAppender);
logger.setAdditive(false);
return logger;
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,17 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import gov.cdc.usds.simplereport.config.authorization.UserPermission;
import gov.cdc.usds.simplereport.db.model.ApiAuditEvent;
import gov.cdc.usds.simplereport.db.model.ApiUser;
import gov.cdc.usds.simplereport.db.model.ConsoleApiAuditEvent;
import gov.cdc.usds.simplereport.db.model.Organization;
import gov.cdc.usds.simplereport.db.model.PatientLink;
import gov.cdc.usds.simplereport.db.model.auxiliary.HttpRequestDetails;
import gov.cdc.usds.simplereport.db.repository.ApiAuditEventRepository;
import gov.cdc.usds.simplereport.logging.GraphqlQueryState;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.validator.constraints.Range;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
Expand All @@ -22,12 +24,24 @@
@Validated
@Slf4j
public class AuditService {

public static final int MAX_EVENT_FETCH = 10;

private final ApiAuditEventRepository _repo;
private final ApiUserService _userService;
private final AuditLoggerService auditLoggerService;

public AuditService(ApiUserService userService, AuditLoggerService auditLoggerService) {
public AuditService(ApiAuditEventRepository repo, ApiUserService userService) {
this._repo = repo;
this._userService = userService;
this.auditLoggerService = auditLoggerService;
}

public List<ApiAuditEvent> getLastEvents(@Range(min = 1, max = MAX_EVENT_FETCH) int count) {
List<ApiAuditEvent> events = _repo.findFirst10ByOrderByEventTimestampDesc();
return count <= events.size() ? events.subList(0, count) : events;
}

public long countAuditEvents() {
return _repo.count();
}

@Transactional(readOnly = false)
Expand All @@ -39,8 +53,8 @@ public void logGraphQlEvent(
boolean isAdmin,
Organization organization) {
log.trace("Saving audit event for {}", state.getRequestId());
auditLoggerService.logEvent(
new ConsoleApiAuditEvent(
_repo.save(
new ApiAuditEvent(
state.getRequestId(),
state.getHttpDetails(),
state.getGraphqlDetails(),
Expand All @@ -61,8 +75,7 @@ public void logRestEvent(
log.trace("Saving audit event for {}", requestId);
HttpRequestDetails reqDetails = new HttpRequestDetails(request);
ApiUser userInfo = _userService.getCurrentApiUserInContainedTransaction();
auditLoggerService.logEvent(
new ConsoleApiAuditEvent(requestId, reqDetails, responseCode, userInfo, org, patientLink));
_repo.save(new ApiAuditEvent(requestId, reqDetails, responseCode, userInfo, org, patientLink));
}

@Transactional(readOnly = false)
Expand All @@ -76,8 +89,7 @@ public void logAnonymousRestEvent(
? null
: JsonNodeFactory.instance.objectNode().put("userId", userIdObj.toString());
ApiUser anonymousUser = _userService.getAnonymousApiUser();
auditLoggerService.logEvent(
new ConsoleApiAuditEvent(requestId, reqDetails, responseCode, userId, anonymousUser));
_repo.save(new ApiAuditEvent(requestId, reqDetails, responseCode, userId, anonymousUser));
}

@Transactional(readOnly = false)
Expand All @@ -90,7 +102,6 @@ public void logWebhookRestEvent(String requestId, HttpServletRequest request, in
? null
: JsonNodeFactory.instance.objectNode().put("userId", userIdObj.toString());
ApiUser webhookUser = _userService.getWebhookApiUser();
auditLoggerService.logEvent(
new ConsoleApiAuditEvent(requestId, reqDetails, responseCode, userId, webhookUser));
_repo.save(new ApiAuditEvent(requestId, reqDetails, responseCode, userId, webhookUser));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,6 @@
"name": "simple-report.azure-reporting-queue",
"type": "gov.cdc.usds.simplereport.properties.AzureStorageQueueReportingProperties",
"description": "Properties for Azure Storage Queue for Test Event reporting to ReportStream."
},
{
"name": "logging.pattern.json-log",
"type": "java.lang.String",
"description": "the patterns used for json message"
}
]
}
1 change: 0 additions & 1 deletion backend/src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -121,5 +121,4 @@ twilio:
logging:
pattern:
console: "{\"time\": \"%d{yyyy-MM-dd HH:mm:ss.SSS}\", \"level\": \"%p\", \"source\": \"%logger{39}:%L\", \"message\": \"%replace(%m%wEx){'[\r\n]+', '\\n'}%nopex\"}%n"
json-log: "{\"time\": \"%d{yyyy-MM-dd HH:mm:ss.SSS}\", \"level\": \"%p\", \"source\": \"%logger{39}:%L\", \"message\": %replace(%m%wEx){'[\r\n]+', '\\n'}%nopex}%n"
hibernate.query.interceptor.error-level: ERROR
Loading

0 comments on commit b307168

Please sign in to comment.