Các bạn hãy tưởng tượng, Huong Dan Java Logger là một endpoint trong một Mule Flow. Khi Mule Flow xử lý request tới Huong Dan Java Logger endpoint, nó sẽ thực thi tất cả các dòng code có trong phương thức log() của class HuongDanJavaLoggerComponentConnector. Sau khi thực thi những đoạn code này xong, thì giá trị trả về của phương thức này chính là payload của Mule Message đó các bạn.
Hiện tại, nếu các bạn sử dụng Huong Dan Java Logger trong ứng dụng Mule của mình thì sẽ thấy sau khi qua endpoint Huong Dan Java Logger, giá trị của payload là giá trị của Corellation Id.
Ví dụ, mình có một ứng dụng Mule nhỏ như sau:
Trong đó, Huong Dan Java Logger có cấu hình như sau:
Global Configuration:
Còn Logger component có cấu hình như sau:
thì khi chạy kết quả sẽ là:
Như mình đã nói và như các bạn thấy, hiện tại sau khi qua Huong Dan Java Logger, payload của Mule Message là giá trị của Corellation Id.
Để sửa lỗi này, các bạn hãy thay đổi đoạn code return trong phương thức log() của class HuongDanJavaLoggerComponentConnector như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
@Processor public Object log( @Placement(group = Text.GENERIC, order = 1) @Optional String message, @Placement(group = Text.GENERIC, order = 2) @Default("INFO") @FriendlyName(Text.LEVEL) LoggingLevel loggingLevel, @Placement(group = Text.OVERRIDE, order = 1) @Optional @FriendlyName(Text.OVVERIDE_CORRELATION_ID) String globalCorrelationIdOverride, @Placement(group = Text.OVERRIDE, order = 2) @Optional @FriendlyName(Text.OVVERIDE_CATEGORY) String globalCategoryOverride, MuleEvent event) { String category = getCategory(config, globalCategoryOverride); String correlationId = getEvaluatedCorrelationId(event, config, globalCorrelationIdOverride); MDC.put(CORRELATION_ID_ELEMENT, correlationId); String evaluatedMessage = getEvaluatedMessage(event, message); Logger logger = LoggerFactory.getLogger(category); if (evaluatedMessage != null) { doLogging(logger, loggingLevel, evaluatedMessage); } return event.getMessage().getPayload(); } |