From efdb99f8cecc4afb592afad79c761081d5d5cf22 Mon Sep 17 00:00:00 2001 From: lee <4766465@qq.com> Date: Wed, 18 Dec 2024 13:27:00 +0800 Subject: [PATCH] init --- xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobHelper.java | 255 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 255 insertions(+), 0 deletions(-) diff --git a/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobHelper.java b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobHelper.java new file mode 100644 index 0000000..eb20c18 --- /dev/null +++ b/xxl-job/xxl-job-core/src/main/java/com/xxl/job/core/context/XxlJobHelper.java @@ -0,0 +1,255 @@ +package com.xxl.job.core.context; + +import com.xxl.job.core.log.XxlJobFileAppender; +import com.xxl.job.core.util.DateUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.helpers.FormattingTuple; +import org.slf4j.helpers.MessageFormatter; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Date; + +/** + * helper for xxl-job + * + * @author xuxueli 2020-11-05 + */ +public class XxlJobHelper { + + // ---------------------- base info ---------------------- + + /** + * current JobId + * + * @return + */ + public static long getJobId() { + XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext(); + if (xxlJobContext == null) { + return -1; + } + + return xxlJobContext.getJobId(); + } + + /** + * current JobParam + * + * @return + */ + public static String getJobParam() { + XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext(); + if (xxlJobContext == null) { + return null; + } + + return xxlJobContext.getJobParam(); + } + + // ---------------------- for log ---------------------- + + /** + * current JobLogFileName + * + * @return + */ + public static String getJobLogFileName() { + XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext(); + if (xxlJobContext == null) { + return null; + } + + return xxlJobContext.getJobLogFileName(); + } + + // ---------------------- for shard ---------------------- + + /** + * current ShardIndex + * + * @return + */ + public static int getShardIndex() { + XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext(); + if (xxlJobContext == null) { + return -1; + } + + return xxlJobContext.getShardIndex(); + } + + /** + * current ShardTotal + * + * @return + */ + public static int getShardTotal() { + XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext(); + if (xxlJobContext == null) { + return -1; + } + + return xxlJobContext.getShardTotal(); + } + + // ---------------------- tool for log ---------------------- + + private static Logger logger = LoggerFactory.getLogger("xxl-job logger"); + + /** + * append log with pattern + * + * @param appendLogPattern like "aaa {} bbb {} ccc" + * @param appendLogArguments like "111, true" + */ + public static boolean log(String appendLogPattern, Object ... appendLogArguments) { + + FormattingTuple ft = MessageFormatter.arrayFormat(appendLogPattern, appendLogArguments); + String appendLog = ft.getMessage(); + + /*appendLog = appendLogPattern; + if (appendLogArguments!=null && appendLogArguments.length>0) { + appendLog = MessageFormat.format(appendLogPattern, appendLogArguments); + }*/ + + StackTraceElement callInfo = new Throwable().getStackTrace()[1]; + return logDetail(callInfo, appendLog); + } + + /** + * append exception stack + * + * @param e + */ + public static boolean log(Throwable e) { + + StringWriter stringWriter = new StringWriter(); + e.printStackTrace(new PrintWriter(stringWriter)); + String appendLog = stringWriter.toString(); + + StackTraceElement callInfo = new Throwable().getStackTrace()[1]; + return logDetail(callInfo, appendLog); + } + + /** + * append log + * + * @param callInfo + * @param appendLog + */ + private static boolean logDetail(StackTraceElement callInfo, String appendLog) { + XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext(); + if (xxlJobContext == null) { + return false; + } + + /*// "yyyy-MM-dd HH:mm:ss [ClassName]-[MethodName]-[LineNumber]-[ThreadName] log"; + StackTraceElement[] stackTraceElements = new Throwable().getStackTrace(); + StackTraceElement callInfo = stackTraceElements[1];*/ + + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append(DateUtil.formatDateTime(new Date())).append(" ") + .append("["+ callInfo.getClassName() + "#" + callInfo.getMethodName() +"]").append("-") + .append("["+ callInfo.getLineNumber() +"]").append("-") + .append("["+ Thread.currentThread().getName() +"]").append(" ") + .append(appendLog!=null?appendLog:""); + String formatAppendLog = stringBuffer.toString(); + + // appendlog + String logFileName = xxlJobContext.getJobLogFileName(); + + if (logFileName!=null && logFileName.trim().length()>0) { + XxlJobFileAppender.appendLog(logFileName, formatAppendLog); + return true; + } else { + logger.info(">>>>>>>>>>> {}", formatAppendLog); + return false; + } + } + + // ---------------------- tool for handleResult ---------------------- + + /** + * handle success + * + * @return + */ + public static boolean handleSuccess(){ + return handleResult(XxlJobContext.HANDLE_CODE_SUCCESS, null); + } + + /** + * handle success with log msg + * + * @param handleMsg + * @return + */ + public static boolean handleSuccess(String handleMsg) { + return handleResult(XxlJobContext.HANDLE_CODE_SUCCESS, handleMsg); + } + + /** + * handle fail + * + * @return + */ + public static boolean handleFail(){ + return handleResult(XxlJobContext.HANDLE_CODE_FAIL, null); + } + + /** + * handle fail with log msg + * + * @param handleMsg + * @return + */ + public static boolean handleFail(String handleMsg) { + return handleResult(XxlJobContext.HANDLE_CODE_FAIL, handleMsg); + } + + /** + * handle timeout + * + * @return + */ + public static boolean handleTimeout(){ + return handleResult(XxlJobContext.HANDLE_CODE_TIMEOUT, null); + } + + /** + * handle timeout with log msg + * + * @param handleMsg + * @return + */ + public static boolean handleTimeout(String handleMsg){ + return handleResult(XxlJobContext.HANDLE_CODE_TIMEOUT, handleMsg); + } + + /** + * @param handleCode + * + * 200 : success + * 500 : fail + * 502 : timeout + * + * @param handleMsg + * @return + */ + public static boolean handleResult(int handleCode, String handleMsg) { + XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext(); + if (xxlJobContext == null) { + return false; + } + + xxlJobContext.setHandleCode(handleCode); + if (handleMsg != null) { + xxlJobContext.setHandleMsg(handleMsg); + } + return true; + } + + +} -- Gitblit v1.9.3