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

com.biz.operation.log.store.OperationLogContextHolder Maven / Gradle / Ivy

Go to download

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