将日志完整删除

This commit is contained in:
junj2.liang 2022-09-08 14:26:17 +08:00
parent 45b300a8f4
commit 6e54421b93
16 changed files with 10 additions and 469 deletions

12
pom.xml
View File

@ -6,7 +6,7 @@
<groupId>com.sunyard.sge.database</groupId>
<artifactId>sydapi-database</artifactId>
<version>1.0</version>
<version>1.1</version>
<name>sydapi-database</name>
@ -31,16 +31,6 @@
<version>1.0.20220902</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log.version}</version>
</dependency>
</dependencies>

View File

@ -1,9 +1,5 @@
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;
/**
@ -17,7 +13,7 @@ public interface SydApi {
* @param pcLogPath 输入日志存储路径
* @param iLogLevel 输入日志级别设置
* 0不记录日志
* 1记录网络层错误日志
* @deprecated 1记录网络层错误日志
* 2记录接口错误日志及网络层错误日志
* 3记录正确日志及错误日志
* @return
@ -28,8 +24,6 @@ public interface SydApi {
if (pcLogPath == null || iLogLevel < 0 || iLogLevel > 3) {
throw new IllegalArgumentException("地址不能为空且等级范围为0到3");
}
Logger logger = LogFactory.createLogger(pcLogPath, iLogLevel);
SydApi4j.setLogger(logger);
}
/**

View File

@ -3,7 +3,6 @@ package com.sunyard.sge.database;
import com.sunyard.SydApiException;
import com.sunyard.proto.Util;
import com.sunyard.sge.database.pool.HsmLinkInfo;
import com.sunyard.sge.log.LogFactory;
import com.sunyard.sge.pool.ObjectInPool;
import com.sunyard.util.SYMUtil;
import org.apache.logging.log4j.Logger;
@ -17,9 +16,6 @@ import java.util.List;
*/
public class SydApi4Database implements SydApi {
static {
SydApi.SYD_SetLogConfig("./logs/", 0);
}
private SydApi4j[] hsms = null;
private HsmLinkInfo[] linkInfos = null;
@ -56,11 +52,6 @@ public class SydApi4Database implements SydApi {
@Override
public SydApi SYD_Short_Connect_Ex(String[] pcIpList, int[] iPortList, int iConnectTimeOut, int allDealTimeOut) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_Connect_Ex方法接收参数:pcIpList:{},iPortList:{},iConnectTimeOut:{},iDealTimeOut:{}", Arrays.toString(pcIpList), Arrays.toString(iPortList), iConnectTimeOut, allDealTimeOut);
}
if (pcIpList.length != iPortList.length) {
throw new IllegalArgumentException("ip与端口数量不一致");
}
@ -75,7 +66,6 @@ public class SydApi4Database implements SydApi {
connected = true;
} catch (Exception e) {
// 忽略错误
log.error("网络连接错误 {} {} - 忽略", pcIpList[i], iPortList[i]);
}
}
@ -123,10 +113,6 @@ public class SydApi4Database implements SydApi {
@Override
public String SYD_SM3_Hash_ShortData(byte[] pcData) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM3_Hash_ShortData方法接收参数pcData{}", Arrays.toString(pcData));
}
if (null == this.hsms || this.hsms.length < 1) {
throw new SydApiException(-1);
}
@ -142,12 +128,10 @@ public class SydApi4Database implements SydApi {
if (isShortLinkMode) {
try {
byte[] hash = api.SYD_SM3_LongData(pcData, null, 0);
log.debug("api.SYD_SM3_LongData方法返回值{}", Arrays.toString(hash));
return Util.bytes2HexString(hash);
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -156,12 +140,10 @@ public class SydApi4Database implements SydApi {
synchronized (api) {
try {
byte[] hash = api.SYD_SM3_LongData(pcData, null, 0);
log.debug("api.SYD_SM3_LongData方法返回值{}", Arrays.toString(hash));
return Util.bytes2HexString(hash);
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -174,10 +156,6 @@ public class SydApi4Database implements SydApi {
@Override
public LongDataReturn<String, String> SYD_SM3_Hash_LongData(byte[] pcData, int iPkgNum, String pcProcData) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM3_Hash_LongData方法接收参数pcData{},iPkgNum{},pcProcData{}", Arrays.toString(pcData), iPkgNum, pcProcData);
}
if (null == this.hsms || this.hsms.length < 1) {
throw new SydApiException(-1);
@ -185,7 +163,6 @@ public class SydApi4Database implements SydApi {
byte[] procData = null;
if (2 == iPkgNum || 3 == iPkgNum) {
procData = Util.hexString2Bytes(pcProcData);
log.debug("Util.hexString2Bytes方法返回值{}", Arrays.toString(procData));
}
@ -198,7 +175,6 @@ public class SydApi4Database implements SydApi {
if (isShortLinkMode) {
try {
byte[] hash = api.SYD_SM3_LongData(pcData, procData, iPkgNum);
log.debug("api.SYD_SM3_LongData方法返回值{}", Arrays.toString(hash));
if (0 == iPkgNum || 3 == iPkgNum) {
return new LongDataReturn<String, String>(null, Util.bytes2HexString(hash));
} else {
@ -207,7 +183,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -216,7 +191,6 @@ public class SydApi4Database implements SydApi {
synchronized (api) {
try {
byte[] hash = api.SYD_SM3_LongData(pcData, procData, iPkgNum);
log.debug("api.SYD_SM3_LongData方法返回值{}", Arrays.toString(hash));
if (0 == iPkgNum || 3 == iPkgNum) {
return new LongDataReturn<String, String>(null, Util.bytes2HexString(hash));
} else {
@ -225,7 +199,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -239,10 +212,6 @@ public class SydApi4Database implements SydApi {
@Override
public byte[] SYD_SM4_ShortData(int iKeyIndex, byte[] pcData, int iFlag) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM4_ShortData方法接收参数iKeyIndex{},pcData{},iFlag{}", iKeyIndex, Arrays.toString(pcData), iFlag);
}
if (iFlag == Consts.ECB_DEC && null == pcData || pcData.length == 0) {
throw new SydApiException(19);
}
@ -275,7 +244,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -299,7 +267,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -312,10 +279,7 @@ public class SydApi4Database implements SydApi {
@Override
public List<byte[]> SYD_SM4_BatchData(int[] iKeyIndex, List<byte[]> pcData, int iFlag) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM4_BatchData方法接收参数iKeyIndex{},pcData元素个数为{},iFlag{}", iKeyIndex, pcData.size(), iFlag);
}
if (iFlag == Consts.ECB_DEC) {
for (byte[] pcdata : pcData) {
if (null == pcData || pcdata.length == 0) {
@ -349,7 +313,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -366,7 +329,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -379,10 +341,7 @@ public class SydApi4Database implements SydApi {
@Override
public byte[] SYD_SM4_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, int iFlag) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM4_LongData方法接收参数iKeyIndex{},pcData{},iPkgNum{},iFlag{}", iKeyIndex, Arrays.toString(pcData), iPkgNum, iFlag);
}
if (iFlag == Consts.ECB_DEC && (null == pcData || pcData.length == 0)) {
throw new SydApiException(19);
}
@ -418,7 +377,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -448,7 +406,6 @@ public class SydApi4Database implements SydApi {
}
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -462,10 +419,7 @@ public class SydApi4Database implements SydApi {
@Override
public String[] SYD_SM4Mac_BatchData(int[] iKeyIndex, List<byte[]> pcData) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM4Mac_BatchDataiKeyIndex{},pcData元素个数为{}", iKeyIndex, pcData.size());
}
if (null == this.hsms || this.hsms.length < 1) {
throw new SydApiException(-1);
}
@ -495,7 +449,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -516,7 +469,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -529,10 +481,7 @@ public class SydApi4Database implements SydApi {
@Override
public boolean[] SYD_SM4Mac_BatchData(int[] iKeyIndex, List<byte[]> pcData, String[] pcMac) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM4Mac_BatchData方法接收参数iKeyIndex{},pcData元素个数为{},pcMac{}", iKeyIndex, pcData.size(), Arrays.toString(pcMac));
}
if (null == this.hsms || this.hsms.length < 1) {
throw new SydApiException(-1);
}
@ -563,7 +512,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -584,7 +532,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -597,10 +544,7 @@ public class SydApi4Database implements SydApi {
@Override
public LongDataReturn<String, String> SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, String pcProcData) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM4Mac_LongData方法接收参数iKeyIndex{},pcData{},iPkgNum{},pcProcData{}", iKeyIndex, Arrays.toString(pcData), iPkgNum, pcProcData);
}
if (null == this.hsms || this.hsms.length < 1) {
throw new SydApiException(-1);
}
@ -642,7 +586,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -671,7 +614,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -684,10 +626,7 @@ public class SydApi4Database implements SydApi {
@Override
public LongDataReturn<String, Boolean> SYD_SM4Mac_LongData(int iKeyIndex, byte[] pcData, int iPkgNum, String pcProcData, String pcMac) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM4Mac_LongData方法接收参数iKeyIndex{},pcData{},iPkgNum{},pcProcData{}", iKeyIndex, Arrays.toString(pcData), iPkgNum, pcProcData, pcMac);
}
updateLastUseTime();
LongDataReturn<String, String> ret = SYD_SM4Mac_LongData(iKeyIndex, pcData, iPkgNum, pcProcData);
@ -702,15 +641,11 @@ public class SydApi4Database implements SydApi {
@Override
public String SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM4Mac_ShortData方法接收参数iKeyIndex{},pcData{},iFlag{}", iKeyIndex, Arrays.toString(pcData));
}
if (null == this.hsms || this.hsms.length < 1) {
throw new SydApiException(-1);
}
String keyIndex = "SK" + SYMUtil.genPrivateKeyMark("000000", "00A", String.format("%08d", iKeyIndex));
log.debug("\"SK\" + SYMUtil.genPrivateKeyMark方法返回值{}", keyIndex);
SydApiException le = new SydApiException(-1);
updateLastUseTime();
@ -726,7 +661,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -741,7 +675,6 @@ public class SydApi4Database implements SydApi {
} catch (SydApiException e) {
le = e;
if (e.getRetCode() < 0) {
log.error("HA 重试");
continue;
}
throw e;
@ -754,10 +687,7 @@ public class SydApi4Database implements SydApi {
@Override
public boolean SYD_SM4Mac_ShortData(int iKeyIndex, byte[] pcData, String pcMac) {
Logger log = LogFactory.getLogger();
if (LogFactory.iLogLevel == 3) {
log.debug("SYD_SM4Mac_ShortData方法接收参数{}", iKeyIndex, Arrays.toString(pcData), pcMac);
}
if (null == this.hsms || this.hsms.length < 1) {
throw new SydApiException(-1);
}
@ -767,7 +697,6 @@ public class SydApi4Database implements SydApi {
}
updateLastUseTime();
String mac = this.SYD_SM4Mac_ShortData(iKeyIndex, pcData);
log.debug(this + ".SYD_SM4Mac_ShortData方法返回值{}", mac);
return pcMac.equals(mac);
}

View File

@ -2,7 +2,6 @@ package com.sunyard.sge.database;
import com.sunyard.sge.database.pool.HsmLinkInfo;
import com.sunyard.sge.database.pool.SydApiPool;
import com.sunyard.sge.log.LogFactory;
import org.apache.logging.log4j.Logger;
import java.util.Arrays;
@ -18,9 +17,6 @@ public class SydApiBuilder {
int iConnectTimeOut,
int iDealTimeOut
) {
Logger log = LogFactory.getLogger();
log.debug("创建链接");
log.debug("SydApiBuilder构造方法接收参数:pcIpList:{},iPortList:{},iConnectTimeOut:{},iDealTimeOut:{}", Arrays.toString(pcIpList),Arrays.toString(iPortList),iConnectTimeOut,iDealTimeOut);
HsmLinkInfo[] linkInfo = HsmLinkInfo.mutiHsmLinkInfo(pcIpList, iPortList, iConnectTimeOut, iDealTimeOut);
this.pool = new SydApiPool(linkInfo);
warmUp( pcIpList, iPortList, iConnectTimeOut, iDealTimeOut );

View File

@ -2,7 +2,6 @@ package com.sunyard.sge.database.pool;
import com.sunyard.sge.database.SydApi;
import com.sunyard.sge.log.LogFactory;
import org.apache.logging.log4j.Logger;
import java.util.Arrays;
@ -12,10 +11,6 @@ import java.util.Arrays;
* 到加密机的链接信息
*/
public class HsmLinkInfo {
static {
SydApi.SYD_SetLogConfig("./logs/", 0);
}
static Logger log = LogFactory.getLogger();
private String pcIp;
private int iPort;
private int iConnectTimeOut;
@ -31,20 +26,15 @@ public class HsmLinkInfo {
public static HsmLinkInfo[] mutiHsmLinkInfo(String[] pcIpList, int[] iPortList, int iConnectTimeOut, int iAllDealTimeOut) {
log.debug("mutiHsmLinkInfo方法接收参数:pcIpList:{},iPortList:{},iConnectTimeOut:{},iDealTimeOut:{}", Arrays.toString(pcIpList),Arrays.toString(iPortList),iConnectTimeOut,iAllDealTimeOut);
log.debug("链接参数整理");
if (null == pcIpList ||
null == iPortList
) {
log.error("ip 和 port 为空");
throw new IllegalArgumentException("入参错误");
}
if ( pcIpList.length != iPortList.length){
log.error("加密机配置 ip 和 port 数量错误");
throw new IllegalArgumentException("入参错误");
}
if ( iAllDealTimeOut < pcIpList.length) {
log.error("加密机配置交易时间过短");
throw new IllegalArgumentException("入参错误");
}

View File

@ -3,16 +3,12 @@ package com.sunyard.sge.database.pool;
import com.sunyard.SydApiException;
import com.sunyard.sge.database.SydApi;
import com.sunyard.sge.database.SydApi4Database;
import com.sunyard.sge.log.LogFactory;
import com.sunyard.sge.pool.ObjectInPool;
import com.sunyard.sge.pool.ThreadBasedConnectPool;
import org.apache.logging.log4j.Logger;
import racal.sunyard.main.SydApi4j;
public class SydApiPool extends ThreadBasedConnectPool<SydApi> {
static {
SydApi.SYD_SetLogConfig("./logs/", 0);
}
private HsmLinkInfo[] linkInfos;
@ -40,9 +36,7 @@ public class SydApiPool extends ThreadBasedConnectPool<SydApi> {
);
connected = true;
} catch (Exception e) {
Logger log = LogFactory.getLogger();
// 忽略单个错误
log.error("网络连接错误 {} {} - 忽略", info.getPcIp(), info.getiPort());
}
}

View File

@ -1,112 +0,0 @@
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);
}
}

View File

@ -1,44 +0,0 @@
package com.sunyard.sge.log;
public class LogInfo {
private int level;
private long datatime;
private String tname;
private long tid;
private String msg;
private Object[] objects;
public LogInfo(int level, String msg, Object[] objects) {
this.level = level;
this.msg = msg;
this.objects = objects;
this.datatime = System.currentTimeMillis();
this.tname = Thread.currentThread().getName();
this.tid = Thread.currentThread().getId();
}
public int getLevel() {
return level;
}
public long getDatatime() {
return datatime;
}
public String getTname() {
return tname;
}
public long getTid() {
return tid;
}
public String getMsg() {
return msg;
}
public Object[] getObjects() {
return objects;
}
}

View File

@ -1,123 +0,0 @@
package com.sunyard.sge.log;
import com.sunyard.sge.database.Consts;
import java.io.File;
import java.io.FileOutputStream;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
public class SydLogFactory {
// 日期格式
private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
// 金交所定制日志
public static final String logName = "sge-hsm-sydapi-log";
// 日志级别
public static int iLogLevel = Consts.LogLevelOFF;
// 日志目录
public static String pcLogPath = "./sydapi-logs/";
// 日志队列
private static ConcurrentLinkedQueue<LogInfo> queue = new ConcurrentLinkedQueue<LogInfo>();
// 调试标记
public static boolean debug = false;
// 后台打印进程
private static Executor executor = Executors.newSingleThreadExecutor();
static {
executor.execute(new Runnable() {
@Override
public void run() {
String logFileName = "";
FileOutputStream logFos = null;
while (true) {
try {
if (queue.isEmpty()) {
// 释放 CPU
Thread.sleep(500);
continue;
}
// 有日志
// 确认日期
String mayLogFileName = String.format("%s_%s.log", logName, format.format( new Date()));
if ( ! logFileName.equals( mayLogFileName ) ) {
logFileName = mayLogFileName;
if ( null != logFos ) {
logFos.flush();
logFos.close();
}
File folder = new File( pcLogPath );
if ( ! folder.exists() ) {
folder.mkdirs();
}
File f = new File( pcLogPath, logFileName );
if ( ! f.exists() ) {
f.createNewFile();
}
logFos = new FileOutputStream( f , true);
}
while (!queue.isEmpty()) {
LogInfo info = queue.poll();
logFos.write(String.format("[%d:%s <%s-%d>] %s\r\n",
info.getLevel(),
format.format( new Date(info.getDatatime()) ),
info.getTname(),
info.getTid(),
info.getMsg()
).getBytes(StandardCharsets.UTF_8)
);
}
logFos.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
closeFileOutputStream(logFos);
logFileName = "";
}
}
}
});
}
private static void closeFileOutputStream(FileOutputStream fos){
if ( null != fos ) {
try {
fos.flush();
}catch (Exception e) {
//pass
}
try {
fos.close();
}catch (Exception e) {
//pass
}
}
}
private SydLogFactory() {
}
public static SydLogger getLogger() {
return new SydLogger(queue);
}
}

View File

@ -1,36 +0,0 @@
package com.sunyard.sge.log;
import java.util.concurrent.ConcurrentLinkedQueue;
public class SydLogger {
private ConcurrentLinkedQueue<LogInfo> queue;
SydLogger(ConcurrentLinkedQueue<LogInfo> queue) {
this.queue = queue;
}
public void debug(String msg, Object... params) {
if (SydLogFactory.iLogLevel == 3) {
this.queue.add(new LogInfo(3, msg, params));
} else {
return;
}
}
public void info(String msg, Object... params) {
if (SydLogFactory.iLogLevel >= 2) {
this.queue.add(new LogInfo(2, msg, params));
} else {
return;
}
}
public void error(String msg, Object... params) {
if (SydLogFactory.iLogLevel >= 1) {
this.queue.add(new LogInfo(1, msg, params));
} else {
return;
}
}
}

View File

@ -1,9 +1,5 @@
package com.sunyard.sge.pool;
import com.sunyard.sge.database.SydApi;
import com.sunyard.sge.database.SydApi4Database;
import com.sunyard.sge.log.LogFactory;
import org.apache.logging.log4j.Logger;
import java.util.HashMap;
@ -12,13 +8,8 @@ import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ThreadBasedConnectPool<T> {
static {
SydApi.SYD_SetLogConfig("./logs/", 0);
}
// ThreadLocal
private final Map<Thread, ObjectInPool<T>> map = new HashMap<>();
@ -34,9 +25,6 @@ public class ThreadBasedConnectPool<T> {
threadPool.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
Logger log = LogFactory.getLogger();
log.debug("连接池检测进程开始执行");
log.debug("共有链接 {} 个", map.size());
// 检测和回收逻辑
Iterator<Map.Entry<Thread, ObjectInPool<T>>> it = map.entrySet().iterator();
@ -51,7 +39,6 @@ public class ThreadBasedConnectPool<T> {
if (System.currentTimeMillis() - oip.getLasUseAt() > config.getMaxUseless()) {
// 长时间未使用回收链接
log.debug("回收一个链接");
it.remove();
@ -72,7 +59,6 @@ public class ThreadBasedConnectPool<T> {
}
if ( ! checkPass) {
log.debug("一个链接检查未通过");
// 检查未通过
it.remove();
@ -84,7 +70,6 @@ public class ThreadBasedConnectPool<T> {
}
}
log.debug("连接池检测进程执行结束");
}
}, config.getMaxIdle(), config.getMaxIdle(), TimeUnit.MILLISECONDS);
}

View File

@ -3,7 +3,6 @@ package sample;
import com.sunyard.proto.Util;
import com.sunyard.sge.database.*;
import com.sunyard.sge.database.Consts;
import com.sunyard.sge.log.LogFactory;
import org.apache.logging.log4j.Logger;
import org.junit.Assert;
@ -16,10 +15,6 @@ public class Sample
public static void main(String[] args) {
// 路径要以 / \\ 结尾表示目录
SydApi.SYD_SetLogConfig("./logs/",3);
Logger log = LogFactory.getLogger();
log.info("start");
// 通常单例就够了
SydApiBuilder builder = new SydApiBuilder(
@ -71,7 +66,6 @@ public class Sample
api.SYD_Disconnect_Ex();
}
System.out.println("all over");
log.info("all over");
}
}

View File

@ -8,7 +8,6 @@ public class ShortLinkSample {
public static void main(String[] args) {
// 路径要以 / \\ 结尾表示目录
SydApi.SYD_SetLogConfig("./logs/",3);
String[] pcipList = {"127.0.0.1", "192.168.0.200" };
int[] iportList ={8080,8889};

View File

@ -1,19 +1,10 @@
package test;
import com.sunyard.proto.Util;
import com.sunyard.sge.database.*;
import com.sunyard.sge.database.pool.HsmLinkInfo;
import com.sunyard.sge.database.pool.SydApiPool;
import com.sunyard.sge.log.LogFactory;
import org.apache.logging.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.time.Instant;
import java.util.concurrent.TimeUnit;
/**
* 功能确认
*/

View File

@ -3,9 +3,6 @@ package test;
import com.sunyard.proto.Util;
import com.sunyard.sge.database.*;
import com.sunyard.sge.database.Consts;
import com.sunyard.sge.log.LogFactory;
import org.apache.logging.log4j.Logger;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

View File

@ -1,8 +1,5 @@
package test;
import com.sunyard.sge.log.LogFactory;
import com.sunyard.sge.log.SydLogFactory;
import com.sunyard.sge.log.SydLogger;
import org.apache.logging.log4j.Logger;
import org.junit.Test;