com.plumelog.lite.logback.appender.LiteAppender Maven / Gradle / Ivy
The newest version!
package com.plumelog.lite.logback.appender;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import com.plumelog.core.constant.LogMessageConstant;
import com.plumelog.core.dto.BaseLogMessage;
import com.plumelog.core.dto.RunLogMessage;
import com.plumelog.core.dto.TraceLogMessage;
import com.plumelog.core.util.GfJsonUtil;
import com.plumelog.core.util.ThreadPoolUtil;
import com.plumelog.lite.client.InitConfig;
import com.plumelog.lite.client.LogSave;
import com.plumelog.lite.logback.util.LogMessageUtil;
import java.util.concurrent.ThreadPoolExecutor;
/**
* className:LiteAppender
* description:
* time:2021-11-01
*
* @author chenlongfei
* @version 1.0.0
*/
public class LiteAppender extends AppenderBase {
private static final ThreadPoolExecutor threadPoolExecutor = ThreadPoolUtil.getPool();
private String appName;
private String env = "default";
private String runModel;
private String expand;
private String logPath;
private int maxCount = 100;
private int logQueueSize = 10000;
private int threadPoolSize = 1;
private int keepDay=30;
private boolean compressor = false;
private static boolean init=false;
public int getKeepDay() {
return keepDay;
}
public void setKeepDay(int keepDay) {
this.keepDay = keepDay;
}
public int getMaxCount() {
return maxCount;
}
public void setMaxCount(int maxCount) {
this.maxCount = maxCount;
}
public int getLogQueueSize() {
return logQueueSize;
}
public void setLogQueueSize(int logQueueSize) {
this.logQueueSize = logQueueSize;
}
public int getThreadPoolSize() {
return threadPoolSize;
}
public void setThreadPoolSize(int threadPoolSize) {
this.threadPoolSize = threadPoolSize;
}
public boolean isCompressor() {
return compressor;
}
public void setCompressor(boolean compressor) {
this.compressor = compressor;
}
public String getlogPath() {
return logPath;
}
public void setlogPath(String logPath) {
this.logPath = logPath;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getEnv() {
return env;
}
public void setEnv(String env) {
this.env = env;
}
public String getRunModel() {
return runModel;
}
public void setRunModel(String runModel) {
this.runModel = runModel;
}
public String getExpand() {
return expand;
}
public void setExpand(String expand) {
this.expand = expand;
}
@Override
protected void append(ILoggingEvent event) {
if (event != null) {
send(event);
}
}
protected void send(ILoggingEvent event) {
final BaseLogMessage logMessage = LogMessageUtil.getLogMessage(appName, env, event);
if (logMessage instanceof RunLogMessage) {
LogSave.pushRundataQueue((RunLogMessage) logMessage);
} else {
LogSave.pushTracedataQueue((TraceLogMessage)logMessage);
}
}
@Override
public void start() {
super.start();
if (this.runModel != null) {
LogMessageConstant.RUN_MODEL = Integer.parseInt(this.runModel);
}
InitConfig.keepDays =this.keepDay;
if (this.expand != null && LogMessageConstant.EXPANDS.contains(this.expand)) {
LogMessageConstant.EXPAND = this.expand;
}
if(!init) {
LogSave.init(this.logQueueSize, this.logPath);
for (int a = 0; a < this.threadPoolSize; a++) {
threadPoolExecutor.execute(() -> LogSave.startRunLog(this.maxCount,
this.compressor ? LogMessageConstant.LOG_KEY_COMPRESS : LogMessageConstant.LOG_KEY, this.compressor));
}
for (int a = 0; a < this.threadPoolSize; a++) {
threadPoolExecutor.execute(() -> LogSave.startTraceLog(this.maxCount,
this.compressor ? LogMessageConstant.LOG_KEY_TRACE_COMPRESS : LogMessageConstant.LOG_KEY_TRACE, this.compressor));
}
init=true;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy