From 2d68d27bf10f662c503efe6103336a94f6af0cc7 Mon Sep 17 00:00:00 2001 From: Doug Dicks Date: Fri, 16 Oct 2020 16:59:43 -0400 Subject: [PATCH] Add additional processors that have pre-set or default values according to their tracepoint. This will reduce the amount of changes a developer needs to make when using the loggers. The existing logger is unchanged. --- .../internal/JsonloggerOperations.java | 144 ++++++++++++++++++ .../schema/loggerProcessorAfter.json | 68 +++++++++ .../schema/loggerProcessorBefore.json | 68 +++++++++ .../resources/schema/loggerProcessorEnd.json | 42 +++++ .../schema/loggerProcessorError.json | 42 +++++ .../resources/schema/loggerProcessorFlow.json | 57 +++++++ .../schema/loggerProcessorStart.json | 42 +++++ 7 files changed, 463 insertions(+) create mode 100644 json-logger/src/main/resources/schema/loggerProcessorAfter.json create mode 100644 json-logger/src/main/resources/schema/loggerProcessorBefore.json create mode 100644 json-logger/src/main/resources/schema/loggerProcessorEnd.json create mode 100644 json-logger/src/main/resources/schema/loggerProcessorError.json create mode 100644 json-logger/src/main/resources/schema/loggerProcessorFlow.json create mode 100644 json-logger/src/main/resources/schema/loggerProcessorStart.json diff --git a/json-logger/src/main/java/org/mule/extension/jsonlogger/internal/JsonloggerOperations.java b/json-logger/src/main/java/org/mule/extension/jsonlogger/internal/JsonloggerOperations.java index a1a2d7f..9fbb1b0 100644 --- a/json-logger/src/main/java/org/mule/extension/jsonlogger/internal/JsonloggerOperations.java +++ b/json-logger/src/main/java/org/mule/extension/jsonlogger/internal/JsonloggerOperations.java @@ -7,7 +7,19 @@ import org.apache.commons.beanutils.PropertyUtils; import org.joda.time.DateTime; import org.mule.extension.jsonlogger.api.pojos.LoggerProcessor; +import org.mule.extension.jsonlogger.api.pojos.LoggerProcessorAfter; +import org.mule.extension.jsonlogger.api.pojos.LoggerProcessorBefore; +import org.mule.extension.jsonlogger.api.pojos.LoggerProcessorStart; +import org.mule.extension.jsonlogger.api.pojos.LoggerProcessorError; +import org.mule.extension.jsonlogger.api.pojos.LoggerProcessorEnd; +import org.mule.extension.jsonlogger.api.pojos.LoggerProcessorFlow; import org.mule.extension.jsonlogger.api.pojos.Priority; +import org.mule.extension.jsonlogger.api.pojos.AfterPriority; +import org.mule.extension.jsonlogger.api.pojos.BeforePriority; +import org.mule.extension.jsonlogger.api.pojos.FlowPriority; +import org.mule.extension.jsonlogger.api.pojos.TracePoint; +import org.mule.extension.jsonlogger.api.pojos.AfterTracePoint; +import org.mule.extension.jsonlogger.api.pojos.BeforeTracePoint; import org.mule.extension.jsonlogger.api.pojos.ScopeTracePoint; import org.mule.extension.jsonlogger.internal.datamask.JsonMasker; import org.mule.extension.jsonlogger.internal.singleton.ConfigsSingleton; @@ -235,6 +247,138 @@ public void logger(@ParameterGroup(name = "Logger") @Expression(value = NOT_SUPP callback.success(VOID_RESULT); } + /** + * Log the START tracepoint at INFO level + */ + @Execution(ExecutionType.BLOCKING) + public void logStart(@ParameterGroup(name = "Logger") @Expression(value = NOT_SUPPORTED) LoggerProcessorStart loggerProcessorStart, + CorrelationInfo correlationInfo, + ComponentLocation location, + @Config JsonloggerConfiguration config, + FlowListener flowListener, + CompletionCallback callback) { + + LoggerProcessor loggerProcessor = new LoggerProcessor(); + loggerProcessor.setCorrelationId(loggerProcessorStart.getCorrelationId()); + loggerProcessor.setMessage(loggerProcessorStart.getMessage()); + loggerProcessor.setContent(loggerProcessorStart.getContent()); + loggerProcessor.setCategory(loggerProcessorStart.getCategory()); + loggerProcessor.setContent(loggerProcessorStart.getContent()); + loggerProcessor.setTracePoint(TracePoint.START); + loggerProcessor.setPriority(Priority.INFO); + logger(loggerProcessor, correlationInfo, location, config, flowListener, callback); + } + + /** + * Log the END tracepoint at the INFO level + */ + @Execution(ExecutionType.BLOCKING) + public void logEnd(@ParameterGroup(name = "Logger") @Expression(value = NOT_SUPPORTED) LoggerProcessorEnd loggerProcessorEnd, + CorrelationInfo correlationInfo, + ComponentLocation location, + @Config JsonloggerConfiguration config, + FlowListener flowListener, + CompletionCallback callback) { + + LoggerProcessor loggerProcessor = new LoggerProcessor(); + loggerProcessor.setCorrelationId(loggerProcessorEnd.getCorrelationId()); + loggerProcessor.setMessage(loggerProcessorEnd.getMessage()); + loggerProcessor.setContent(loggerProcessorEnd.getContent()); + loggerProcessor.setCategory(loggerProcessorEnd.getCategory()); + loggerProcessor.setContent(loggerProcessorEnd.getContent()); + loggerProcessor.setTracePoint(TracePoint.END); + loggerProcessor.setPriority(Priority.INFO); + logger(loggerProcessor, correlationInfo, location, config, flowListener, callback); + } + + /** + * Log the BEFORE tracepoint + */ + @Execution(ExecutionType.BLOCKING) + public void logBefore(@ParameterGroup(name = "Logger") @Expression(value = NOT_SUPPORTED) LoggerProcessorBefore loggerProcessorBefore, + CorrelationInfo correlationInfo, + ComponentLocation location, + @Config JsonloggerConfiguration config, + FlowListener flowListener, + CompletionCallback callback) { + + LoggerProcessor loggerProcessor = new LoggerProcessor(); + loggerProcessor.setCorrelationId(loggerProcessorBefore.getCorrelationId()); + loggerProcessor.setMessage(loggerProcessorBefore.getMessage()); + loggerProcessor.setContent(loggerProcessorBefore.getContent()); + loggerProcessor.setCategory(loggerProcessorBefore.getCategory()); + loggerProcessor.setContent(loggerProcessorBefore.getContent()); + loggerProcessor.setTracePoint(TracePoint.valueOf(loggerProcessorBefore.getTracePoint().toString())); + loggerProcessor.setPriority(Priority.valueOf(loggerProcessorBefore.getPriority().toString())); + logger(loggerProcessor, correlationInfo, location, config, flowListener, callback); + } + + /** + * Log the AFTER tracepoint + */ + @Execution(ExecutionType.BLOCKING) + public void logAfter(@ParameterGroup(name = "Logger") @Expression(value = NOT_SUPPORTED) LoggerProcessorAfter loggerProcessorAfter, + CorrelationInfo correlationInfo, + ComponentLocation location, + @Config JsonloggerConfiguration config, + FlowListener flowListener, + CompletionCallback callback) { + + LoggerProcessor loggerProcessor = new LoggerProcessor(); + loggerProcessor.setCorrelationId(loggerProcessorAfter.getCorrelationId()); + loggerProcessor.setMessage(loggerProcessorAfter.getMessage()); + loggerProcessor.setContent(loggerProcessorAfter.getContent()); + loggerProcessor.setCategory(loggerProcessorAfter.getCategory()); + loggerProcessor.setContent(loggerProcessorAfter.getContent()); + loggerProcessor.setTracePoint(TracePoint.valueOf(loggerProcessorAfter.getTracePoint().toString())); + loggerProcessor.setPriority(Priority.valueOf(loggerProcessorAfter.getPriority().toString())); + logger(loggerProcessor, correlationInfo, location, config, flowListener, callback); + } + + /** + * Log the EXCEPTION tracepoint at the ERROR level + */ + @Execution(ExecutionType.BLOCKING) + public void logError(@ParameterGroup(name = "Logger") @Expression(value = NOT_SUPPORTED) LoggerProcessorError loggerProcessorError, + CorrelationInfo correlationInfo, + ComponentLocation location, + @Config JsonloggerConfiguration config, + FlowListener flowListener, + CompletionCallback callback) { + + LoggerProcessor loggerProcessor = new LoggerProcessor(); + loggerProcessor.setCorrelationId(loggerProcessorError.getCorrelationId()); + loggerProcessor.setMessage(loggerProcessorError.getMessage()); + loggerProcessor.setContent(loggerProcessorError.getContent()); + loggerProcessor.setCategory(loggerProcessorError.getCategory()); + loggerProcessor.setContent(loggerProcessorError.getContent()); + loggerProcessor.setTracePoint(TracePoint.EXCEPTION); + loggerProcessor.setPriority(Priority.ERROR); + logger(loggerProcessor, correlationInfo, location, config, flowListener, callback); + } + + /** + * Log the FLOW tracepoint + */ + @Execution(ExecutionType.BLOCKING) + public void logFlow(@ParameterGroup(name = "Logger") @Expression(value = NOT_SUPPORTED) LoggerProcessorFlow loggerProcessorFlow, + CorrelationInfo correlationInfo, + ComponentLocation location, + @Config JsonloggerConfiguration config, + FlowListener flowListener, + CompletionCallback callback) { + + LoggerProcessor loggerProcessor = new LoggerProcessor(); + loggerProcessor.setCorrelationId(loggerProcessorFlow.getCorrelationId()); + loggerProcessor.setMessage(loggerProcessorFlow.getMessage()); + loggerProcessor.setContent(loggerProcessorFlow.getContent()); + loggerProcessor.setCategory(loggerProcessorFlow.getCategory()); + loggerProcessor.setContent(loggerProcessorFlow.getContent()); + loggerProcessor.setTracePoint(TracePoint.FLOW); + loggerProcessor.setPriority(Priority.valueOf(loggerProcessorFlow.getPriority().toString())); + logger(loggerProcessor, correlationInfo, location, config, flowListener, callback); + } + /** * Log scope */ diff --git a/json-logger/src/main/resources/schema/loggerProcessorAfter.json b/json-logger/src/main/resources/schema/loggerProcessorAfter.json new file mode 100644 index 0000000..08e7d4e --- /dev/null +++ b/json-logger/src/main/resources/schema/loggerProcessorAfter.json @@ -0,0 +1,68 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Definition for fields used in the logger message processor", + "type": "object", + "properties": { + "correlationId": { + "type": "string", + "sdk": { + "default": "#[correlationId]", + "placement": { + "tab": "Advanced" + } + } + }, + "message": { + "type": "string", + "sdk": { + "example": "Add a log message", + "required": false, + "summary": "Message to be logged" + } + }, + "content": { + "type": "string", + "javaType": "org.mule.runtime.extension.api.runtime.parameter.ParameterResolver>", + "sdk": { + "default": "#[import modules::JSONLoggerModule output application/json ---\n{\n payload: JSONLoggerModule::stringifyNonJSON(payload) \n}]", + "summary": "NOTE: Writing the entire payload every time across your application can cause serious performance issues", + "required": false, + "isContent": true + } + }, + "tracePoint": { + "type": "string", + "javaType": "org.mule.extension.jsonlogger.api.pojos.AfterTracePoint", + "enum": [ + "AFTER_TRANSFORM", + "AFTER_REQUEST" + ], + "sdk": { + "default": "AFTER_REQUEST", + "summary": "Current processing stage" + } + }, + "priority": { + "type": "string", + "javaType": "org.mule.extension.jsonlogger.api.pojos.AfterPriority", + "enum": [ + "DEBUG", + "TRACE", + "INFO" + ], + "sdk": { + "default": "DEBUG", + "summary": "Logger priority" + }, + "note": "This field is mandatory. DON'T REMOVE" + }, + "category": { + "type": "string", + "sdk": { + "required": false, + "summary": "If not set, by default will log to the org.mule.extension.jsonlogger.JsonLogger category" + }, + "note": "This field is mandatory. DON'T REMOVE" + } + } +} \ No newline at end of file diff --git a/json-logger/src/main/resources/schema/loggerProcessorBefore.json b/json-logger/src/main/resources/schema/loggerProcessorBefore.json new file mode 100644 index 0000000..55bff6e --- /dev/null +++ b/json-logger/src/main/resources/schema/loggerProcessorBefore.json @@ -0,0 +1,68 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Definition for fields used in the logger message processor", + "type": "object", + "properties": { + "correlationId": { + "type": "string", + "sdk": { + "default": "#[correlationId]", + "placement": { + "tab": "Advanced" + } + } + }, + "message": { + "type": "string", + "sdk": { + "example": "Add a log message", + "required": false, + "summary": "Message to be logged" + } + }, + "content": { + "type": "string", + "javaType": "org.mule.runtime.extension.api.runtime.parameter.ParameterResolver>", + "sdk": { + "default": "#[import modules::JSONLoggerModule output application/json ---\n{\n payload: JSONLoggerModule::stringifyNonJSON(payload) \n}]", + "summary": "NOTE: Writing the entire payload every time across your application can cause serious performance issues", + "required": false, + "isContent": true + } + }, + "tracePoint": { + "type": "string", + "javaType": "org.mule.extension.jsonlogger.api.pojos.BeforeTracePoint", + "enum": [ + "BEFORE_TRANSFORM", + "BEFORE_REQUEST" + ], + "sdk": { + "default": "BEFORE_REQUEST", + "summary": "Current processing stage" + } + }, + "priority": { + "type": "string", + "javaType": "org.mule.extension.jsonlogger.api.pojos.BeforePriority", + "enum": [ + "DEBUG", + "TRACE", + "INFO" + ], + "sdk": { + "default": "DEBUG", + "summary": "Logger priority" + }, + "note": "This field is mandatory. DON'T REMOVE" + }, + "category": { + "type": "string", + "sdk": { + "required": false, + "summary": "If not set, by default will log to the org.mule.extension.jsonlogger.JsonLogger category" + }, + "note": "This field is mandatory. DON'T REMOVE" + } + } +} \ No newline at end of file diff --git a/json-logger/src/main/resources/schema/loggerProcessorEnd.json b/json-logger/src/main/resources/schema/loggerProcessorEnd.json new file mode 100644 index 0000000..a6d5ec7 --- /dev/null +++ b/json-logger/src/main/resources/schema/loggerProcessorEnd.json @@ -0,0 +1,42 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Definition for fields used in the logger message processor", + "type": "object", + "properties": { + "correlationId": { + "type": "string", + "sdk": { + "default": "#[correlationId]", + "placement": { + "tab": "Advanced" + } + } + }, + "message": { + "type": "string", + "sdk": { + "example": "Add a log message", + "required": false, + "summary": "Message to be logged" + } + }, + "content": { + "type": "string", + "javaType": "org.mule.runtime.extension.api.runtime.parameter.ParameterResolver>", + "sdk": { + "default": "#[import modules::JSONLoggerModule output application/json ---\n{\n payload: JSONLoggerModule::stringifyNonJSON(payload) \n}]", + "summary": "NOTE: Writing the entire payload every time across your application can cause serious performance issues", + "required": false, + "isContent": true + } + }, + "category": { + "type": "string", + "sdk": { + "required": false, + "summary": "If not set, by default will log to the org.mule.extension.jsonlogger.JsonLogger category" + }, + "note": "This field is mandatory. DON'T REMOVE" + } + } +} \ No newline at end of file diff --git a/json-logger/src/main/resources/schema/loggerProcessorError.json b/json-logger/src/main/resources/schema/loggerProcessorError.json new file mode 100644 index 0000000..45c874e --- /dev/null +++ b/json-logger/src/main/resources/schema/loggerProcessorError.json @@ -0,0 +1,42 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Definition for fields used in the logger message processor", + "type": "object", + "properties": { + "correlationId": { + "type": "string", + "sdk": { + "default": "#[correlationId]", + "placement": { + "tab": "Advanced" + } + } + }, + "message": { + "type": "string", + "sdk": { + "example": "Add a log message", + "required": true, + "summary": "Message to be logged" + } + }, + "content": { + "type": "string", + "javaType": "org.mule.runtime.extension.api.runtime.parameter.ParameterResolver>", + "sdk": { + "default": "#[import modules::JSONLoggerModule output application/json ---\n{\n payload: JSONLoggerModule::stringifyNonJSON(payload) \n}]", + "summary": "NOTE: Writing the entire payload every time across your application can cause serious performance issues", + "required": false, + "isContent": true + } + }, + "category": { + "type": "string", + "sdk": { + "required": false, + "summary": "If not set, by default will log to the org.mule.extension.jsonlogger.JsonLogger category" + }, + "note": "This field is mandatory. DON'T REMOVE" + } + } +} \ No newline at end of file diff --git a/json-logger/src/main/resources/schema/loggerProcessorFlow.json b/json-logger/src/main/resources/schema/loggerProcessorFlow.json new file mode 100644 index 0000000..99075a8 --- /dev/null +++ b/json-logger/src/main/resources/schema/loggerProcessorFlow.json @@ -0,0 +1,57 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Definition for fields used in the logger message processor", + "type": "object", + "properties": { + "correlationId": { + "type": "string", + "sdk": { + "default": "#[correlationId]", + "placement": { + "tab": "Advanced" + } + } + }, + "message": { + "type": "string", + "sdk": { + "example": "Add a log message", + "required": true, + "summary": "Message to be logged" + } + }, + "content": { + "type": "string", + "javaType": "org.mule.runtime.extension.api.runtime.parameter.ParameterResolver>", + "sdk": { + "default": "#[import modules::JSONLoggerModule output application/json ---\n{\n payload: JSONLoggerModule::stringifyNonJSON(payload) \n}]", + "summary": "NOTE: Writing the entire payload every time across your application can cause serious performance issues", + "required": false, + "isContent": true + } + }, + "priority": { + "type": "string", + "javaType": "org.mule.extension.jsonlogger.api.pojos.FlowPriority", + "enum": [ + "DEBUG", + "TRACE", + "INFO", + "WARN" + ], + "sdk": { + "default": "INFO", + "summary": "Logger priority" + }, + "note": "This field is mandatory. DON'T REMOVE" + }, + "category": { + "type": "string", + "sdk": { + "required": false, + "summary": "If not set, by default will log to the org.mule.extension.jsonlogger.JsonLogger category" + }, + "note": "This field is mandatory. DON'T REMOVE" + } + } +} \ No newline at end of file diff --git a/json-logger/src/main/resources/schema/loggerProcessorStart.json b/json-logger/src/main/resources/schema/loggerProcessorStart.json new file mode 100644 index 0000000..a6d5ec7 --- /dev/null +++ b/json-logger/src/main/resources/schema/loggerProcessorStart.json @@ -0,0 +1,42 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Definition for fields used in the logger message processor", + "type": "object", + "properties": { + "correlationId": { + "type": "string", + "sdk": { + "default": "#[correlationId]", + "placement": { + "tab": "Advanced" + } + } + }, + "message": { + "type": "string", + "sdk": { + "example": "Add a log message", + "required": false, + "summary": "Message to be logged" + } + }, + "content": { + "type": "string", + "javaType": "org.mule.runtime.extension.api.runtime.parameter.ParameterResolver>", + "sdk": { + "default": "#[import modules::JSONLoggerModule output application/json ---\n{\n payload: JSONLoggerModule::stringifyNonJSON(payload) \n}]", + "summary": "NOTE: Writing the entire payload every time across your application can cause serious performance issues", + "required": false, + "isContent": true + } + }, + "category": { + "type": "string", + "sdk": { + "required": false, + "summary": "If not set, by default will log to the org.mule.extension.jsonlogger.JsonLogger category" + }, + "note": "This field is mandatory. DON'T REMOVE" + } + } +} \ No newline at end of file