## 概述

系统提供了日志工厂类的默认实现LogbackFactory，调用Slf4JLogger组件实现日志操作。苍穹允许自定义日志实现，开发自定义的LogFactory即可。



## 配置

请在MC中配置以下参数：

| 属性                 | 值                   | 备注                       |
| -------------------- | -------------------- | -------------------------- |
| logfactory.className | com.xxx.MyLogFactory | 配置你开发的日志工厂实现类 |

示例：开发环境可以在启动类中设置上表中的属性值

```java
//配置你开发的日志工厂实现类，如：com.xxx.MyLogFactory
System.setProperty("logfactory.className","com.xxx.MyLogFactory"); 
```



## 接口实现

实现LogFactory抽象类的_getLog()抽象方法即可：

```java
public abstract class kd.bos.logging.LogFactory{
    protected abstract Log _getLog(String clazzName);
}
```



示例：创建MyLogFactory实现类，继承kd.bos.logging.LogFactory抽象类实现_getLog(String className)的逻辑：


```java
//第1步. 自定义日志工厂类（样例代码）
public class MyLogFactory extends LogFactory{   
	private static final ConcurrentMap<String, MyLoggerImpl> logMap = new ConcurrentHashMap<String, MyLoggerImpl>();

	@Override
	protected Log _getLog(String className) {
		MyLoggerImpl log = logMap.get(className);
		if(log==null)
		{
			log = new MyLoggerImpl(className);
			MyLoggerImpl oldLog = logMap.putIfAbsent(className, log);
			if(oldLog!=null)
				return oldLog;
		}
		
		return log;
	}
}

//第2步. 实现日志操作类，要求实现kd.bos.logging.Log接口：
public class MyLoggerImpl implements Log {
    //void debug(String msg);
    //void info(String msg);
    ...    
}

```



## 部署

将日志实现类编译成jar包，打包上传到AppStore服务器部署。