rev: 日志简单的高亮

This commit is contained in:
2023-08-27 00:45:13 +08:00
parent 90d9a83eff
commit 4beb798caf
6 changed files with 38 additions and 20 deletions

View File

@@ -68,7 +68,8 @@ public class Searcher {
endDate = LuceneIndexWriter.getDate(endDate); endDate = LuceneIndexWriter.getDate(endDate);
} }
// 字段之间的与或非关系MUST表示andMUST_NOT表示notSHOULD表示or有几个fields就必须有几个clauses // 字段之间的与或非关系MUST表示andMUST_NOT表示notSHOULD表示or有几个fields就必须有几个clauses
TermRangeQuery termRangeQuery = new TermRangeQuery("timestamp", new BytesRef(startDate), new BytesRef(endDate), true, true); TermRangeQuery termRangeQuery = new TermRangeQuery("timestamp", new BytesRef(startDate),
new BytesRef(endDate), true, true);
booleanQueryBuilder.add(termRangeQuery,BooleanClause.Occur.MUST); booleanQueryBuilder.add(termRangeQuery,BooleanClause.Occur.MUST);
if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_MESSAGE))){ if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_MESSAGE))){
//查询解析器 //查询解析器
@@ -79,7 +80,7 @@ public class Searcher {
if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_TRACEID))){ if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_TRACEID))){
//查询解析器 //查询解析器
TermQuery termQuery = new TermQuery(new Term(LogMessageConstant.FIELD_TRACEID, TermQuery termQuery = new TermQuery(new Term(LogMessageConstant.FIELD_TRACEID,
whereJson.get(LogMessageConstant.FIELD_TRACEID).toString().trim())); whereJson.getString(LogMessageConstant.FIELD_TRACEID).trim()));
booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST);
} }
if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_LEVEL))){ if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_LEVEL))){
@@ -110,8 +111,8 @@ public class Searcher {
LogMessageConstant.COLOR_RESET + " - " + LogMessageConstant.COLOR_RESET + " - " +
LogMessageConstant.COLOR_MAGENTA + doc.get(LogMessageConstant.FIELD_CLASS_NAME) + LogMessageConstant.COLOR_MAGENTA + doc.get(LogMessageConstant.FIELD_CLASS_NAME) +
LogMessageConstant.COLOR_RESET + " - " + LogMessageConstant.COLOR_RESET + " - " +
LogMessageConstant.COLOR_BLACK + doc.get(LogMessageConstant.FIELD_MESSAGE); LogMessageConstant.COLOR_BLACK + highlightKeyword(doc.get(LogMessageConstant.FIELD_MESSAGE), whereJson.getString("message"));
// System.out.println(logInfo); System.out.println(logInfo);
list.add(logInfo); list.add(logInfo);
} }
reader.close(); reader.close();
@@ -121,14 +122,32 @@ public class Searcher {
return jo; return jo;
} }
public static String highlightKeyword(String text, String keyword) {
if (ObjectUtil.isEmpty(keyword)) {
return text;
}
int startIndex = text.indexOf(keyword);
if (startIndex != -1) {
int endIndex = startIndex + keyword.length();
String beforeKeyword = text.substring(0, startIndex);
String afterKeyword = text.substring(endIndex);
String highlightedKeyword = LogMessageConstant.BACKGROUND_YELLOW + keyword + LogMessageConstant.COLOR_RESET
+ LogMessageConstant.COLOR_BLACK;
return beforeKeyword + highlightedKeyword + afterKeyword;
} else {
return text;
}
}
public static void main(String[] args) { public static void main(String[] args) {
String indexDir = "D:\\lucene\\debug_log"; String indexDir = "D:\\lucene\\debug_log";
//查询这个字符串 //查询这个字符串
JSONObject whereJson = new JSONObject(); JSONObject whereJson = new JSONObject();
whereJson.put("size", "500"); whereJson.put("size", "500");
whereJson.put("page", "0"); whereJson.put("page", "1");
// whereJson.put("message", "traceId"); whereJson.put("message", "请求方法参数");
whereJson.put(LogMessageConstant.FIELD_TRACEID, "13236874421038464"); // whereJson.put(LogMessageConstant.FIELD_TRACEID, "13244183367577216");
try { try {
search(indexDir, whereJson); search(indexDir, whereJson);

View File

@@ -36,4 +36,6 @@ public class LogMessageConstant {
public final static String COLOR_WHITE = "\u001B[37m"; public final static String COLOR_WHITE = "\u001B[37m";
/** 文本颜色重置 */ /** 文本颜色重置 */
public final static String COLOR_RESET = "\u001B[0m"; public final static String COLOR_RESET = "\u001B[0m";
/** 背景颜色:黄色 */
public final static String BACKGROUND_YELLOW = "\u001B[43m";
} }

View File

@@ -60,15 +60,11 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
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.FIELD_THREAD, event.getThreadName())); doc.add(new StoredField(LogMessageConstant.FIELD_THREAD, event.getThreadName()));
if (ObjectUtil.isNotEmpty(mdcPropertyMap)) { 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);
if (ObjectUtil.isNotEmpty(traceId)) { doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, traceId, Field.Store.YES));
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, traceId,Field.Store.YES));
} else {
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID",Field.Store.YES));
}
} else { } else {
doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID",Field.Store.YES)); 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 {

View File

@@ -15,12 +15,12 @@ spring:
username: ${DB_USER:root} username: ${DB_USER:root}
password: ${DB_PWD:12356} password: ${DB_PWD:12356}
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
db2: # db2:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver # driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:13306}/${DB_NAME:test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true # url: jdbc:p6spy:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:13306}/${DB_NAME:test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root} # username: ${DB_USER:root}
password: ${DB_PWD:12356} # password: ${DB_PWD:12356}
type: com.alibaba.druid.pool.DruidDataSource # type: com.alibaba.druid.pool.DruidDataSource
flyway: flyway:
# 是否启用flyway # 是否启用flyway

View File

@@ -128,6 +128,7 @@ export default {
}, },
queryData() { queryData() {
luceneOperation.getLogData(this.query).then(res => { luceneOperation.getLogData(this.query).then(res => {
this.logs = [] // 清空
var ansi_up = new AnsiUp() var ansi_up = new AnsiUp()
// 数据初始化 // 数据初始化
for (const i in res.content) { for (const i in res.content) {