在 WSO2 ESB 5.0.0 中使用 SLF4J 日志框架

Posted Calvin Chan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在 WSO2 ESB 5.0.0 中使用 SLF4J 日志框架相关的知识,希望对你有一定的参考价值。

一、所需 jar 包

由于 WSO2 ESB 5.0.0 自带的日志组件使用的是 log4j,并提供有 log4j-slf4j-impl jar 包,所以只需导入以下三个包:

可以到 mvnrepository 下载 jar 包。

把 jar 包放到 {WSO2 ESB 5.0.0}\\lib 目录下

导入 jar 到项目。

二、修改日志输出级别

打开 {WSO2 ESB 5.0.0}\\repository\\conf\\log4j.properties 文件

把第 38 行开头的 ERROR 改为 INFO,保存,重启 WSO2 ESB。

不修改的话只会打印 ≥ ERROR 级别的日志。

三、实例测试

1、添加自带的 Log 日志组件。

2、Mediator Project 类

package com;

import org.apache.synapse.MessageContext; 
import org.apache.synapse.mediators.AbstractMediator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestMyModel extends AbstractMediator { 

	private String property_name;
	
	public String getProperty_name() {
		return property_name;
	}

	public void setProperty_name(String property_name) {
		this.property_name = property_name;
	}

	//SLF4J 日志记录器
	private static final Logger logger = LoggerFactory.getLogger(TestMyModel.class);
	
	public boolean mediate(MessageContext context) { 
		// TODO Implement your mediation logic here 
		
		String xmldata = (String)context.getProperty(property_name);
		
		//System.out.println("xmldata: " + xmldata);
		
		logger.info("info xmldata: {}", xmldata);
		logger.warn("warn xmldata: {}", xmldata);
		logger.error("error xmldata: {}", xmldata);
		
		//log 是 wso2 自带的日志记录器,在扩展了 AbstractMediator 的类中不用声明可以直接使用。
		log.debug("receive debug");
		//log.info("receive info");
		//log.warn("receive warn");
		//log.error("receive error");

		String resp = "<DATA>\\n" + 
				"        <DATAINFOS>\\n" + 
				"            <PUUID>11111</PUUID>\\n" + 
				"            <SYNCODE>ZWY</SYNCODE>\\n" + 
				"            <DATAINFO>\\n" + 
				"                <DESC1>ABC</DESC1>\\n" + 
				"            </DATAINFO>\\n" + 
				"        </DATAINFOS>\\n" + 
				"    </DATA>";
		context.setProperty("resp", resp);
		
		return true;
	}
}

3、Postman 测试

Postman 进行 POST 请求测试。

控制台日志输出:

[2021-07-28 20:13:49,333]  INFO - LogMediator To: /test_my_model, MessageID: urn:uuid:c51c534d-9cdd-4bdb-9ee6-d8fe40f5fb47, Direction: request
[2021-07-28 20:13:49,334]  INFO - test_my_model To: /test_my_model, MessageID: urn:uuid:c51c534d-9cdd-4bdb-9ee6-d8fe40f5fb47, Direction: request
[2021-07-28 20:13:49,461]  INFO - LogMediator To: /test_my_model, MessageID: urn:uuid:c51c534d-9cdd-4bdb-9ee6-d8fe40f5fb47, Direction: request
[2021-07-28 20:13:49,462]  INFO - test_my_model To: /test_my_model, MessageID: urn:uuid:c51c534d-9cdd-4bdb-9ee6-d8fe40f5fb47, Direction: request
[2021-07-28 20:13:49,462]  INFO - TestMyModel info xmldata: {"ESB":{"DATA":{"DATAINFOS":{"PUUID":11111,"SYNCODE":"test_my_model","DATAINFO":{"DESC1":"EFG","DESC2":"ABC","DESC3":"ABC","DESC4":"ABC","DESC5":"ABC","DESC6":"ABC","DESC7":"ABC"}}}}}
[2021-07-28 20:13:49,463]  WARN - TestMyModel warn xmldata: {"ESB":{"DATA":{"DATAINFOS":{"PUUID":11111,"SYNCODE":"test_my_model","DATAINFO":{"DESC1":"EFG","DESC2":"ABC","DESC3":"ABC","DESC4":"ABC","DESC5":"ABC","DESC6":"ABC","DESC7":"ABC"}}}}}
[2021-07-28 20:13:49,464] ERROR - TestMyModel error xmldata: {"ESB":{"DATA":{"DATAINFOS":{"PUUID":11111,"SYNCODE":"test_my_model","DATAINFO":{"DESC1":"EFG","DESC2":"ABC","DESC3":"ABC","DESC4":"ABC","DESC5":"ABC","DESC6":"ABC","DESC7":"ABC"}}}}}

可以看到自带的日志组件和 SLF4J 日志框架的输出格式基本一致。

以上是关于在 WSO2 ESB 5.0.0 中使用 SLF4J 日志框架的主要内容,如果未能解决你的问题,请参考以下文章

为 WSO2 ESB 5.0.0 集群配置 MySQL 数据库

为 WSO2 ESB 5.0.0 集群配置 MySQL 数据库

Eclipse JEE Mars 2 配置 WSO2 ESB 5.0.0 环境

WSO2 ESB 5.0.0 配置 MySQL 数据源

WSO2 ESB 5.0.0 配置 MySQL 数据源

WSO2 ESB 5.0.0 一些组件的使用教程