From 90a45cedd7619b1f1ea8265d5ea1426392c519c0 Mon Sep 17 00:00:00 2001 From: "junj2.liang" Date: Thu, 8 Sep 2022 22:11:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../java/com/sunyard/sge/database/SydApi.java | 8 +- .../sunyard/sge/database/SydApi4Database.java | 5 +- .../sge/database/SydApiBaseFunction.java | 4 +- .../sge/database/SydApiLongLinkWrap.java | 4 + .../sunyard/sge/database/pool/SydApiPool.java | 4 +- .../java/com/sunyard/sge/log/LogFactory.java | 112 ++++++++++++++++++ src/test/java/sample/Sample.java | 2 +- src/test/java/test/FuncTest.java | 1 + sydapi-database.iml | 7 +- 10 files changed, 139 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/sunyard/sge/log/LogFactory.java diff --git a/pom.xml b/pom.xml index bafa9e3..58b8174 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ com.sunyard sydapi4j - 1.12.20220908-1 + 1.12.20220908-3 diff --git a/src/main/java/com/sunyard/sge/database/SydApi.java b/src/main/java/com/sunyard/sge/database/SydApi.java index e0acff4..7973d6f 100644 --- a/src/main/java/com/sunyard/sge/database/SydApi.java +++ b/src/main/java/com/sunyard/sge/database/SydApi.java @@ -1,5 +1,9 @@ package com.sunyard.sge.database; +import com.sunyard.sge.log.LogFactory; +import org.apache.logging.log4j.Logger; +import racal.sunyard.main.SydApi4j; + import java.util.List; /** @@ -13,7 +17,7 @@ public interface SydApi { * @param pcLogPath: 输入。日志存储路径 * @param iLogLevel: 输入。日志级别设置 * 0:不记录日志, - * @deprecated 1:记录网络层错误日志, + * 1:记录网络层错误日志, * 2:记录接口错误日志及网络层错误日志, * 3:记录正确日志及错误日志 * @return 无 @@ -24,6 +28,8 @@ public interface SydApi { if (pcLogPath == null || iLogLevel < 0 || iLogLevel > 3) { throw new IllegalArgumentException("地址不能为空且等级范围为0到3"); } + Logger logger = LogFactory.createLogger(pcLogPath, iLogLevel); + SydApi4j.setLogger(logger); } /** diff --git a/src/main/java/com/sunyard/sge/database/SydApi4Database.java b/src/main/java/com/sunyard/sge/database/SydApi4Database.java index d7f3d02..1181b4b 100644 --- a/src/main/java/com/sunyard/sge/database/SydApi4Database.java +++ b/src/main/java/com/sunyard/sge/database/SydApi4Database.java @@ -1,6 +1,7 @@ package com.sunyard.sge.database; import com.sunyard.sge.database.pool.HsmLinkInfo; +import com.sunyard.sge.log.LogFactory; import com.sunyard.sge.pool.CommWorker; import racal.sunyard.main.SydApi4j; @@ -23,7 +24,9 @@ public class SydApi4Database extends SydApiBaseFunction { public SydApi4Database(SydApi4j[] hsms, HsmLinkInfo[] linkInfos) { super(hsms, linkInfos); } - + static { + LogFactory.createLogger("./logs", 0); + } @Override public List SYD_SM4_BatchData(int[] iKeyIndex, List pcData, int iFlag) { diff --git a/src/main/java/com/sunyard/sge/database/SydApiBaseFunction.java b/src/main/java/com/sunyard/sge/database/SydApiBaseFunction.java index 7188b04..26b23e2 100644 --- a/src/main/java/com/sunyard/sge/database/SydApiBaseFunction.java +++ b/src/main/java/com/sunyard/sge/database/SydApiBaseFunction.java @@ -16,7 +16,9 @@ import java.util.List; * 上海黄金交易所 - 数据库加密方案 */ public class SydApiBaseFunction implements SydApi { - + static { + LogFactory.createLogger("./logs", 0); + } private SydApi4j[] hsms = null; private HsmLinkInfo[] linkInfos = null; private ObjectInPool oip = null; diff --git a/src/main/java/com/sunyard/sge/database/SydApiLongLinkWrap.java b/src/main/java/com/sunyard/sge/database/SydApiLongLinkWrap.java index 2828712..064a9ed 100644 --- a/src/main/java/com/sunyard/sge/database/SydApiLongLinkWrap.java +++ b/src/main/java/com/sunyard/sge/database/SydApiLongLinkWrap.java @@ -1,6 +1,7 @@ package com.sunyard.sge.database; import com.sunyard.SydApiException; +import com.sunyard.sge.log.LogFactory; import java.util.ArrayList; import java.util.Arrays; @@ -16,6 +17,9 @@ import static com.sunyard.sge.database.SydApiConfig.BATCH_SIZE; * 长连接的真正执行过程转发到长连接线程池中执行。 */ public class SydApiLongLinkWrap implements SydApi { + static { + LogFactory.createLogger("./logs", 0); + } private SydApiBuilder builder; diff --git a/src/main/java/com/sunyard/sge/database/pool/SydApiPool.java b/src/main/java/com/sunyard/sge/database/pool/SydApiPool.java index 3a0de84..909e695 100644 --- a/src/main/java/com/sunyard/sge/database/pool/SydApiPool.java +++ b/src/main/java/com/sunyard/sge/database/pool/SydApiPool.java @@ -13,7 +13,9 @@ import racal.sunyard.main.SydApi4j; public class SydApiPool extends ThreadBasedConnectPool { private HsmLinkInfo[] linkInfos; - + static { + LogFactory.createLogger("./logs", 0); + } public SydApiPool(HsmLinkInfo[] linkInfos) { super(); this.linkInfos = linkInfos; diff --git a/src/main/java/com/sunyard/sge/log/LogFactory.java b/src/main/java/com/sunyard/sge/log/LogFactory.java new file mode 100644 index 0000000..4f2db66 --- /dev/null +++ b/src/main/java/com/sunyard/sge/log/LogFactory.java @@ -0,0 +1,112 @@ +package com.sunyard.sge.log; + +import com.sunyard.sge.database.Consts; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.Appender; +import org.apache.logging.log4j.core.Layout; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.appender.FileAppender; +import org.apache.logging.log4j.core.appender.rolling.SizeBasedTriggeringPolicy; +import org.apache.logging.log4j.core.appender.rolling.TriggeringPolicy; +import org.apache.logging.log4j.core.config.AppenderRef; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; +import org.apache.logging.log4j.core.layout.PatternLayout; +import org.apache.logging.log4j.Logger; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * 金交所定制日志 + */ +public class LogFactory { + + // 金交所定制日志 + public static final String logName = "sge-hsm-sydapi-log"; + + // 日志级别 + public static int iLogLevel = Consts.LogLevelOFF; + + // Levels + private static final Level[] levels = new Level[]{ Level.OFF, Level.ERROR, Level.INFO, Level.DEBUG }; + + // 日志目录 + private static String pcLogPath = "./sydapi-logs/"; + +// // 日期格式 +// private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + + private LogFactory() { + } + + public static void start() { + // 上下文 + final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + final Configuration config = ctx.getConfiguration(); + + // 创建一个展示的样式 + Layout layout = PatternLayout.createLayout( + "[%level{DEBUG=3, INFO=2, ERROR=1, OFF=0}: %d{ISO8601} <%thread>] %message%n%throwable", + null, + config, null, null, true, false, null, null); + + + TriggeringPolicy tp = SizeBasedTriggeringPolicy.createPolicy("10MB"); + +// Appender appender = RollingFileAppender.createAppender(String.format("logs/test/syncshows-job-%s.log", jobID), +// "/logs/test/" + jobID + "/syncshows-job-" + jobID + ".log.gz", +// "true", jobID, null, null, null, tp, null, layout, null, +// null, null, null, config); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + // 日志打印方式——输出为文件    + Appender appender = FileAppender.createAppender( + String.format( pcLogPath +"sydapi_"+ format.format(new Date()) + ".log"), + "true", "false", + logName, null, "true", "true", null, layout, null, null, null, config); + + appender.start(); + config.addAppender(appender); + AppenderRef ref = AppenderRef.createAppenderRef( logName, levels[ iLogLevel ], null); + AppenderRef[] refs = new AppenderRef[]{ref}; + LoggerConfig loggerConfig = LoggerConfig.createLogger("false", levels[ iLogLevel ], logName, + "true", refs, null, config, null); + loggerConfig.addAppender(appender, levels[ iLogLevel ], null); + config.addLogger( logName, loggerConfig); + ctx.updateLoggers(); + } + + + public static void stop() { + final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + final Configuration config = ctx.getConfiguration(); + config.getAppender( logName ).stop(); + config.getLoggerConfig(logName).removeAppender( logName); + config.removeLogger(logName); + ctx.updateLoggers(); + } + + + /** + * 创建 Logger + * @return Logger + */ + public static Logger createLogger(String pcLogPath, int iLogLevel) { + LogFactory.pcLogPath = pcLogPath; + LogFactory.iLogLevel = iLogLevel; + start(); + return LogManager.getLogger(logName); + + } + + /** + * 获取 Logger + * @return Logger + */ + public static Logger getLogger() { + return LogManager.getLogger(logName); + } + + +} diff --git a/src/test/java/sample/Sample.java b/src/test/java/sample/Sample.java index f6d0e76..d1081e9 100644 --- a/src/test/java/sample/Sample.java +++ b/src/test/java/sample/Sample.java @@ -18,7 +18,7 @@ public class Sample // 通常单例就够了 SydApiBuilder builder = new SydApiBuilder( - new String[]{ "192.168.1.128" }, + new String[]{ "192.168.1.129" }, new int[]{ 8889 }, 10, 15 diff --git a/src/test/java/test/FuncTest.java b/src/test/java/test/FuncTest.java index 0349481..65882ea 100644 --- a/src/test/java/test/FuncTest.java +++ b/src/test/java/test/FuncTest.java @@ -1,6 +1,7 @@ package test; import com.sunyard.sge.database.*; +import com.sunyard.sge.log.LogFactory; import org.apache.logging.log4j.Logger; import org.junit.Before; import org.junit.Test; diff --git a/sydapi-database.iml b/sydapi-database.iml index 4d7f858..2c06296 100644 --- a/sydapi-database.iml +++ b/sydapi-database.iml @@ -12,11 +12,10 @@ - - - - + + + \ No newline at end of file