X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.auditlogging%2Fsrc%2Forg%2Fsimantics%2Faudit%2Fclient%2FAuditLoggingClient.java;h=769ebb0862f1abe7892eed45a1a59ae565e42b03;hb=ee1faf8f38b6ad98dd805f66a7294f3aedbafb5e;hp=e31a6ab214531a967fee0a06d3d41cd12fb7e573;hpb=da4210cb095e4acd25ddba55a86aa6fe0b18301d;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.auditlogging/src/org/simantics/audit/client/AuditLoggingClient.java b/bundles/org.simantics.auditlogging/src/org/simantics/audit/client/AuditLoggingClient.java index e31a6ab21..769ebb086 100644 --- a/bundles/org.simantics.auditlogging/src/org/simantics/audit/client/AuditLoggingClient.java +++ b/bundles/org.simantics.auditlogging/src/org/simantics/audit/client/AuditLoggingClient.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.UUID; import org.simantics.audit.AuditLogging; import org.simantics.audit.AuditLogging.Level; @@ -14,6 +15,7 @@ import org.slf4j.LoggerFactory; public class AuditLoggingClient { private static final String AUDIT_SERVER_ADDRESS = "org.simantics.audit.serverAddress"; + private static final String AUDIT_CLIENT_ID = "org.simantics.audit.clientId"; private static final Logger LOGGER = LoggerFactory.getLogger(AuditLoggingClient.class); @@ -21,29 +23,38 @@ public class AuditLoggingClient { private AuditLoggingAPIClient apiClient; - private AuditLoggingClient() throws AuditLoggingException { - // Read config from sysargs - System.out.println("asd"); - String serverAddress = System.getProperty(AUDIT_SERVER_ADDRESS); - if (serverAddress != null && !serverAddress.isEmpty()) { - apiClient = new AuditLoggingAPIClient("testlog", serverAddress); - - } else { - LOGGER.warn("No {} system property defined so client not configured", AUDIT_SERVER_ADDRESS); - } + private AuditLoggingClient(String clientId, String serverAddress) throws AuditLoggingException { + apiClient = new AuditLoggingAPIClient(clientId, serverAddress); + } + + private static AuditLoggingClient fromEnv() throws AuditLoggingException { + return fromProps(System.getProperties()); } - private static AuditLoggingClient instance() throws AuditLoggingException { + + public static AuditLoggingClient fromProps(Map properties) throws AuditLoggingException { if (INSTANCE == null) { synchronized (AuditLoggingClient.class) { if (INSTANCE == null) { - INSTANCE = new AuditLoggingClient(); + String serverAddress = (String) properties.get(AUDIT_SERVER_ADDRESS); + String clientId = (String) properties.get(AUDIT_CLIENT_ID); + if (clientId == null || clientId.isEmpty()) + clientId = UUID.randomUUID().toString(); + if (serverAddress != null && !serverAddress.isEmpty()) { + INSTANCE = new AuditLoggingClient(clientId, serverAddress); + } else { + LOGGER.warn("No {} system property defined so client not configured", AUDIT_SERVER_ADDRESS); + } } } } return INSTANCE; } + public static String getUUID() throws AuditLoggingException { + return fromEnv().apiClient.getUuid(); + } + public static void sendLog(List keyValues) throws AuditLoggingException { commit(Level.INFO, toMap(keyValues.toArray())); } @@ -84,21 +95,22 @@ public class AuditLoggingClient { private static void commit(Level level, Map message) throws AuditLoggingException { try { - AuditLoggingAPIClient client = instance().apiClient; - if (client == null) { + AuditLoggingClient client = fromEnv(); + if (client == null || client.apiClient == null) { // No can do - at least log to file LOGGER.warn("Audit logging server not configured - printing event to log"); LOGGER.info(message.toString()); } else { + AuditLoggingAPIClient apiClient = client.apiClient; switch (level) { case INFO: - client.log(message); + apiClient.log(message); break; case ERROR: - client.error(message); + apiClient.error(message); break; case TRACE: - client.trace(message); + apiClient.trace(message); break; default: break;