diff --git a/powerjob-common/src/main/java/tech/powerjob/common/model/LogConfig.java b/powerjob-common/src/main/java/tech/powerjob/common/model/LogConfig.java index b8357bf2..6e77a907 100644 --- a/powerjob-common/src/main/java/tech/powerjob/common/model/LogConfig.java +++ b/powerjob-common/src/main/java/tech/powerjob/common/model/LogConfig.java @@ -33,6 +33,7 @@ public class LogConfig { public enum LogType { ONLINE(1), LOCAL(2), + STDOUT(3), NULL(999); private final Integer v; diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/log/OmsLoggerFactory.java b/powerjob-worker/src/main/java/tech/powerjob/worker/log/OmsLoggerFactory.java index e336196a..e8579fa8 100644 --- a/powerjob-worker/src/main/java/tech/powerjob/worker/log/OmsLoggerFactory.java +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/log/OmsLoggerFactory.java @@ -7,6 +7,7 @@ import tech.powerjob.worker.common.WorkerRuntime; import tech.powerjob.worker.log.impl.OmsLocalLogger; import tech.powerjob.worker.log.impl.OmsNullLogger; import tech.powerjob.worker.log.impl.OmsServerLogger; +import tech.powerjob.worker.log.impl.OmsStdOutLogger; /** * OmsLoggerFactory @@ -31,6 +32,8 @@ public class OmsLoggerFactory { switch (LogConfig.LogType.of(cfg.getType())) { case LOCAL: return new OmsLocalLogger(cfg); + case STDOUT: + return new OmsStdOutLogger(cfg); case NULL: return new OmsNullLogger(); default: diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/AbstractOmsLogger.java b/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/AbstractOmsLogger.java index bb5cd2bf..d5e263dc 100644 --- a/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/AbstractOmsLogger.java +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/AbstractOmsLogger.java @@ -1,5 +1,8 @@ package tech.powerjob.worker.log.impl; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.slf4j.helpers.FormattingTuple; +import org.slf4j.helpers.MessageFormatter; import tech.powerjob.common.enums.LogLevel; import tech.powerjob.common.model.LogConfig; import tech.powerjob.worker.log.OmsLogger; @@ -65,4 +68,21 @@ public abstract class AbstractOmsLogger implements OmsLogger { } error0(messagePattern, args); } + + /** + * 生成日志内容 + * @param messagePattern 日志格式 + * @param arg 填充参数 + * @return 生成完毕的日志内容 + */ + protected static String genLogContent(String messagePattern, Object... arg) { + // 借用 Slf4J 直接生成日志信息 + FormattingTuple formattingTuple = MessageFormatter.arrayFormat(messagePattern, arg); + if (formattingTuple.getThrowable() != null) { + String stackTrace = ExceptionUtils.getStackTrace(formattingTuple.getThrowable()); + return formattingTuple.getMessage() + System.lineSeparator() + stackTrace; + }else { + return formattingTuple.getMessage(); + } + } } diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsLocalLogger.java b/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsLocalLogger.java index ae7da742..5ea7e9cc 100644 --- a/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsLocalLogger.java +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsLocalLogger.java @@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory; import tech.powerjob.common.model.LogConfig; /** - * More user feedback when the task volume server timeout serious. After pressure testing, we found that there is no bottleneck in the server processing scheduling tasks, and it is assumed that the large amount of logs is causing a serious bottleneck. Therefore, we need to provide local logging API for large MR tasks. + * Many user feedback when the task volume server timeout serious. After pressure testing, we found that there is no bottleneck in the server processing scheduling tasks, and it is assumed that the large amount of logs is causing a serious bottleneck. Therefore, we need to provide local logging API for large MR tasks. * * @author tjq * @since 2021/2/4 diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsServerLogger.java b/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsServerLogger.java index d12785f0..b2dd7853 100644 --- a/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsServerLogger.java +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsServerLogger.java @@ -3,9 +3,6 @@ package tech.powerjob.worker.log.impl; import tech.powerjob.common.enums.LogLevel; import tech.powerjob.common.model.LogConfig; import tech.powerjob.worker.background.OmsLogHandler; -import org.apache.commons.lang3.exception.ExceptionUtils; -import org.slf4j.helpers.FormattingTuple; -import org.slf4j.helpers.MessageFormatter; /** @@ -47,23 +44,6 @@ public class OmsServerLogger extends AbstractOmsLogger { process(LogLevel.ERROR, messagePattern, args); } - /** - * 生成日志内容 - * @param messagePattern 日志格式 - * @param arg 填充参数 - * @return 生成完毕的日志内容 - */ - private static String genLogContent(String messagePattern, Object... arg) { - // 借用 Slf4J 直接生成日志信息 - FormattingTuple formattingTuple = MessageFormatter.arrayFormat(messagePattern, arg); - if (formattingTuple.getThrowable() != null) { - String stackTrace = ExceptionUtils.getStackTrace(formattingTuple.getThrowable()); - return formattingTuple.getMessage() + System.lineSeparator() + stackTrace; - }else { - return formattingTuple.getMessage(); - } - } - private void process(LogLevel level, String messagePattern, Object... args) { String logContent = genLogContent(messagePattern, args); omsLogHandler.submitLog(instanceId, level, logContent); diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsStdOutLogger.java b/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsStdOutLogger.java new file mode 100644 index 00000000..141275cd --- /dev/null +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/log/impl/OmsStdOutLogger.java @@ -0,0 +1,41 @@ +package tech.powerjob.worker.log.impl; + +import tech.powerjob.common.enums.LogLevel; +import tech.powerjob.common.model.LogConfig; + +/** + * use java.lang.System#out or java.lang.System#err to print log info + * + * @author tjq + * @since 2022/10/3 + */ +public class OmsStdOutLogger extends AbstractOmsLogger { + + public OmsStdOutLogger(LogConfig logConfig) { + super(logConfig); + } + + @Override + void debug0(String messagePattern, Object... args) { + System.out.println(buildStdOut(LogLevel.DEBUG, messagePattern, args)); + } + + @Override + void info0(String messagePattern, Object... args) { + System.out.println(buildStdOut(LogLevel.INFO, messagePattern, args)); + } + + @Override + void warn0(String messagePattern, Object... args) { + System.out.println(buildStdOut(LogLevel.WARN, messagePattern, args)); + } + + @Override + void error0(String messagePattern, Object... args) { + System.err.println(buildStdOut(LogLevel.ERROR, messagePattern, args)); + } + + private static String buildStdOut(LogLevel logLevel, String messagePattern, Object... args) { + return logLevel.name().concat("-").concat(genLogContent(messagePattern, args)); + } +}