修改日志

This commit is contained in:
junj2.liang
2022-09-08 22:11:02 +08:00
parent eaf270a7a5
commit 90a45cedd7
10 changed files with 139 additions and 10 deletions
@@ -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);
}
/**
@@ -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<byte[]> SYD_SM4_BatchData(int[] iKeyIndex, List<byte[]> pcData, int iFlag) {
@@ -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;
@@ -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;
@@ -13,7 +13,9 @@ import racal.sunyard.main.SydApi4j;
public class SydApiPool extends ThreadBasedConnectPool<SydApi> {
private HsmLinkInfo[] linkInfos;
static {
LogFactory.createLogger("./logs", 0);
}
public SydApiPool(HsmLinkInfo[] linkInfos) {
super();
this.linkInfos = linkInfos;
@@ -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);
}
}