All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sghd.logging.RecordService Maven / Gradle / Ivy

The newest version!
package com.sghd.logging;

import java.util.List;
import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.LinkedBlockingQueue;

import org.apache.log4j.Logger;

/**
 * 日志记录工具类
 */
public class RecordService {
	
	private Queue listeners = new LinkedBlockingQueue();

	/**
	 * 设置服务器ID转换器
	 */
	public void setServerIdConverter(ServerIdConverter serverIdConverter) {
		PathUtils.setServerIdConverter(serverIdConverter);
	}

	private ConcurrentMap DISABLE_LOGGEER = new ConcurrentHashMap<>();

	/**
	 * 设置日志是否启用
	 * @param logger 日志记录器
	 * @param type 类型
	 * @param enable 是否启用
	 */
	public void setDisbaled(String logger, String type, boolean enable) {
		if (enable) {
			DISABLE_LOGGEER.remove(logger + ":" + type);
		} else {
			DISABLE_LOGGEER.put(logger + ":" + type, false);
		}
	}

	/**
	 * 日志是否启用
	 * @param logger 日志记录器
	 * @param type 类型
	 * @return 是否启用
	 */
	public boolean isDisbaled(String logger, String type) {
		Boolean flag = DISABLE_LOGGEER.get(logger + ":" + type);
		return flag != null && flag;
	}

	/**
	 * 记录日志
	 * @param loggerName 日志记录器
	 * @param recordName 类型
	 * @param cron cron表达式
	 * @param record 记录对象
	 */
	public void log(String loggerName, String recordName, String cron, Record record) {
		if (isDisbaled(loggerName, recordName)) {
			return;
		}
		Logger logger = Logger.getLogger(loggerName);
		logger.info(new Object[] { recordName, cron, record });
		// 监听器
		for (RecordListener listener : listeners) {
			listener.onRecord(recordName, record);
		}
	}

	public void setListeners(List listeners) {
		this.listeners = new LinkedBlockingQueue<>(listeners);
	}
	
	public void addListeners(RecordListener listener){
		this.listeners.add(listener);
	}
	
	public void removeListeners(RecordListener listener){
		this.listeners.remove(listener);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy