|
@ -20,9 +20,13 @@ import org.nl.common.utils.YmlConfigFileUtil; |
|
|
import org.wltea.analyzer.lucene.IKAnalyzer; |
|
|
import org.wltea.analyzer.lucene.IKAnalyzer; |
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
import java.io.IOException; |
|
|
|
|
|
import java.net.InetAddress; |
|
|
|
|
|
import java.net.UnknownHostException; |
|
|
import java.nio.file.Paths; |
|
|
import java.nio.file.Paths; |
|
|
import java.util.Map; |
|
|
import java.util.Map; |
|
|
import java.util.Properties; |
|
|
import java.util.Properties; |
|
|
|
|
|
import java.util.regex.Matcher; |
|
|
|
|
|
import java.util.regex.Pattern; |
|
|
|
|
|
|
|
|
public class LuceneAppender extends AppenderBase<ILoggingEvent> { |
|
|
public class LuceneAppender extends AppenderBase<ILoggingEvent> { |
|
|
|
|
|
|
|
@ -61,18 +65,43 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> { |
|
|
Map<String, String> mdcPropertyMap = event.getMDCPropertyMap(); |
|
|
Map<String, String> mdcPropertyMap = event.getMDCPropertyMap(); |
|
|
Document doc = new Document(); |
|
|
Document doc = new Document(); |
|
|
long timeStamp = event.getTimeStamp(); |
|
|
long timeStamp = event.getTimeStamp(); |
|
|
|
|
|
// 获取本机的IP地址
|
|
|
|
|
|
String ipAddress = "-"; |
|
|
|
|
|
try { |
|
|
|
|
|
ipAddress = InetAddress.getLocalHost().getHostAddress(); |
|
|
|
|
|
} catch (UnknownHostException e) { |
|
|
|
|
|
throw new RuntimeException(e); |
|
|
|
|
|
} |
|
|
String formattedDateTime = DateUtil.format(new java.util.Date(timeStamp), "yyyy-MM-dd HH:mm:ss.SSS"); |
|
|
String formattedDateTime = DateUtil.format(new java.util.Date(timeStamp), "yyyy-MM-dd HH:mm:ss.SSS"); |
|
|
doc.add(new LongPoint(LogMessageConstant.SORT_NAME, timeStamp)); |
|
|
doc.add(new LongPoint(LogMessageConstant.SORT_NAME, timeStamp)); |
|
|
doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME, timeStamp)); |
|
|
doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME, timeStamp)); |
|
|
doc.add(new StringField(LogMessageConstant.FIELD_LEVEL, event.getLevel().toString(), Field.Store.YES)); |
|
|
doc.add(new StringField(LogMessageConstant.FIELD_LEVEL, event.getLevel().toString(), Field.Store.YES)); |
|
|
doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, formattedDateTime, Field.Store.YES)); |
|
|
doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, formattedDateTime, Field.Store.YES)); |
|
|
doc.add(new StoredField(LogMessageConstant.FIELD_CLASS_NAME, event.getLoggerName())); |
|
|
doc.add(new StoredField(LogMessageConstant.FIELD_CLASS_NAME, event.getLoggerName())); |
|
|
|
|
|
doc.add(new StoredField(LogMessageConstant.IP, ipAddress)); |
|
|
doc.add(new StoredField(LogMessageConstant.FIELD_THREAD, event.getThreadName())); |
|
|
doc.add(new StoredField(LogMessageConstant.FIELD_THREAD, event.getThreadName())); |
|
|
if (ObjectUtil.isNotEmpty(mdcPropertyMap) && ObjectUtil.isNotEmpty(mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID))) { |
|
|
if (ObjectUtil.isNotEmpty(mdcPropertyMap) && ObjectUtil.isNotEmpty(mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID))) { |
|
|
String traceId = mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID); |
|
|
String traceId = mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID); |
|
|
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, traceId, Field.Store.YES)); |
|
|
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, traceId, Field.Store.YES)); |
|
|
|
|
|
doc.add(new StringField(LogMessageConstant.LABEL, ObjectUtil.isNotEmpty(mdcPropertyMap.get("tag_name")) |
|
|
|
|
|
? mdcPropertyMap.get("tag_name") : "-", Field.Store.YES)); |
|
|
} else { |
|
|
} else { |
|
|
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID", Field.Store.YES)); |
|
|
// 定义正则表达式,匹配17位数字
|
|
|
|
|
|
String regex = "\\d{17}"; |
|
|
|
|
|
// 创建 Pattern 对象
|
|
|
|
|
|
Pattern pattern = Pattern.compile(regex); |
|
|
|
|
|
// 创建 Matcher 对象
|
|
|
|
|
|
Matcher matcher = pattern.matcher(message); |
|
|
|
|
|
String matchedNumber = null; |
|
|
|
|
|
// 查找匹配的数字
|
|
|
|
|
|
while (matcher.find()) { |
|
|
|
|
|
matchedNumber = matcher.group(); |
|
|
|
|
|
} |
|
|
|
|
|
if (ObjectUtil.isNotEmpty(matchedNumber)) { |
|
|
|
|
|
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, matchedNumber, Field.Store.YES)); |
|
|
|
|
|
} else { |
|
|
|
|
|
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID", Field.Store.YES)); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, message, Field.Store.YES)); |
|
|
doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, message, Field.Store.YES)); |
|
|
try { |
|
|
try { |
|
|