package core.framework.api.log; import core.framework.impl.log.ActionLog; import core.framework.impl.log.DefaultLoggerFactory; import core.framework.impl.log.LogManager; import org.slf4j.impl.StaticLoggerBinder; import java.util.Optional; /** * @author neo */ public final class ActionLogContext { public static String id() { LogManager logManager = logManager(); ActionLog actionLog = logManager.currentActionLog(); if (actionLog == null) return null; return actionLog.id; } public static Optional<String> get(String key) { LogManager logManager = logManager(); ActionLog actionLog = logManager.currentActionLog(); if (actionLog == null) return Optional.empty(); return actionLog.context(key); } public static void put(String key, Object value) { LogManager logManager = logManager(); ActionLog actionLog = logManager.currentActionLog(); if (actionLog != null) { // here to check null is for unit testing the logManager.begin may not be called actionLog.context(key, value); } } public static void stat(String key, Number value) { LogManager logManager = logManager(); ActionLog actionLog = logManager.currentActionLog(); if (actionLog != null) { actionLog.stats(key, value); } } public static void track(String action, long elapsedTime) { LogManager logManager = logManager(); ActionLog actionLog = logManager.currentActionLog(); if (actionLog != null) { actionLog.track(action, elapsedTime); } } private static LogManager logManager() { return ((DefaultLoggerFactory) StaticLoggerBinder.getSingleton().getLoggerFactory()).logManager; } }