com.biz.operation.log.store.OperationLogContextHolder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of biz-all Show documentation
Show all versions of biz-all Show documentation
BizX 是一个灵活而高效的业务开发框架, 其中也有很多为业务开发所需要的工具类的提供。
The newest version!
package com.biz.operation.log.store;
import org.aspectj.lang.JoinPoint;
import java.util.concurrent.ConcurrentHashMap;
/**
* 操作日志存储内容。
*
*
* 主要存储当前线程的操作日志信息。
*
*
* @author francis
* @create 2024-09-19
* @since 1.0.1
**/
public class OperationLogContextHolder {
/**
* 当前线程操作日志上下文。
*/
private static final InheritableThreadLocal> OPERATION_LOG_CONTEXT = new InheritableThreadLocal<>();
/**
* 获取当前线程操作日志上下文。
*
*
* 根据 {@link OperationLogStoreKey} 获取对应的操作日志上下文。
*
*
* @param key 操作日志上下文键。
* @return 操作日志上下文。
*/
public static OperationLogContext getOperationLogContext(OperationLogStoreKey key) {
ConcurrentHashMap map = getContextMap();
if (map == null) {
throw new IllegalStateException("当前线程未设置操作日志上下文,请先调用 OperationLogContextHolder.setOperationLogContext 方法设置操作日志上下文。");
}
return map.get(key);
}
/**
* 设置当前线程操作日志上下文。
*
*
* 指定 {@link OperationLogStoreKey} 和 {@link OperationLogContext} 对应内容。
*
*
* @param key 操作日志上下文键。
* @param context 操作日志上下文。
*/
public static void setOperationLogContext(OperationLogStoreKey key, OperationLogContext context) {
ConcurrentHashMap map = OPERATION_LOG_CONTEXT.get();
if (map == null) {
map = new ConcurrentHashMap<>();
}
map.put(key, context);
OPERATION_LOG_CONTEXT.set(map);
}
/**
* 构建操作日志上下文键。
*
*
* 返回一个 {@link OperationLogStoreKey} 对象,用于存储操作日志上下文键。
*
*
* @param joinPoint 切点信息。
* @return 操作日志上下文键。
*/
public static OperationLogStoreKey buildOperationLogStoreKey(JoinPoint joinPoint) {
return OperationLogStoreKey.builder()
.className(joinPoint.getTarget().getClass().getName())
.methodName(joinPoint.getSignature().getName())
.build();
}
/**
* 构建操作日志上下文。
*
*
* 返回一个 {@link OperationLogContext} 对象,用于存储操作日志内容。
*
*
* @param content 操作日志内容。
* @return 操作日志上下文。
*/
public static OperationLogContext buildOperationLogContent(String content) {
return OperationLogContext.builder()
.content(content)
.build();
}
/**
* 检查当前线程是否设置了操作日志上下文。
*/
private static void checkContext() {
if (OPERATION_LOG_CONTEXT.get() == null) {
throw new IllegalStateException("当前线程未设置操作日志上下文,请先调用 OperationLogContextHolder.setOperationLogContext 方法设置操作日志上下文。");
}
}
/**
* 获取当前线程的操作日志上下文。
*/
private static ConcurrentHashMap getContextMap() {
checkContext();
return OPERATION_LOG_CONTEXT.get();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy