Commit aefa5c7d authored by 赵啸非's avatar 赵啸非

异常日志添加

parent c01b2f57
......@@ -40,6 +40,20 @@ INSERT INTO `mortals_xhx_resource` VALUES (null, '异常日志-菜单管理-维
-- ----------------------------
-- 异常日志参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_param` VALUES (null, '当前客户端使用平台', 'ErrorLog', 'platform', 'java', 'java', 1, 4, 0, 'platform', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '当前客户端使用平台', 'ErrorLog', 'platform', 'php', 'php', 1, 4, 0, 'platform', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '当前客户端使用平台', 'ErrorLog', 'platform', 'c#', 'c#', 1, 4, 0, 'platform', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '当前客户端使用平台', 'ErrorLog', 'platform', 'android', 'android', 1, 4, 0, 'platform', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '当前客户端使用平台', 'ErrorLog', 'platform', 'vue', 'vue', 1, 4, 0, 'platform', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '当前客户端使用平台', 'ErrorLog', 'platform', 'webos', 'webos', 1, 4, 0, 'platform', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '当前客户端使用平台', 'ErrorLog', 'platform', 'ios', 'ios', 1, 4, 0, 'platform', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '当前客户端使用平台', 'ErrorLog', 'platform', 'python', 'python', 1, 4, 0, 'platform', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '等级', 'ErrorLog', 'level', 'FATAL', 'FATAL', 1, 4, 0, 'level', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '等级', 'ErrorLog', 'level', 'ERROR', 'ERROR', 1, 4, 0, 'level', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '等级', 'ErrorLog', 'level', 'WARNING', 'WARNING', 1, 4, 0, 'level', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '等级', 'ErrorLog', 'level', 'INFO', 'INFO', 1, 4, 0, 'level', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '等级', 'ErrorLog', 'level', 'DEBUG', 'DEBUG', 1, 4, 0, 'level', NULL, NULL, NULL);
-- ----------------------------
-- 平台用户操作日志业务菜单 SQL
-- ----------------------------
......
......@@ -57,19 +57,28 @@ DROP TABLE IF EXISTS `mortals_xhx_error_log`;
CREATE TABLE mortals_xhx_error_log(
`id` bigint(20) COMMENT '主键ID',
`traceID` varchar(64) COMMENT '追踪Id',
`serverType` varchar(64) COMMENT '服务类型,webOS,android,IOS,服务后端',
`appName` varchar(64) COMMENT '应用名称',
`hostName` varchar(64) COMMENT '实例IP',
`logLevel` varchar(64) COMMENT '日志等级',
`appName` varchar(64) COMMENT '应用名称,宿主客户端运行唯一标识。',
`hostName` varchar(64) COMMENT '主机名',
`message` varchar(256) COMMENT '消息标识,如用户登录异常。',
`platform` varchar(64) COMMENT '当前客户端使用平台(java,php,c#,android,vue,webos,ios,python)',
`culprit` varchar(512) COMMENT '主要导致异常函数或方法调用名称',
`tags` varchar(512) COMMENT '异常事件标记,多个逗号分隔。用以归集异常事件种类。',
`level` varchar(64) COMMENT '等级(FATAL,ERROR,WARNING,INFO,DEBUG)',
`environment` varchar(1024) COMMENT '客户端运行环境变量信息',
`releaseVersion` varchar(64) COMMENT '客户端运行版本信息',
`fingerprint` varchar(64) COMMENT '指纹标识,对于相同异常事件归集数量使用。',
`threadNo` varchar(64) COMMENT '线程号',
`error` text COMMENT '异常堆栈信息',
`response` text COMMENT '响应结果',
`logTime` datetime COMMENT '日志产生时间',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`checkNum` int(4) COMMENT '针对同一个异常事件,数量加1',
`errorStack` text COMMENT '异常堆栈信息',
`context` text COMMENT '上下文信息,如js中发送异常事件,定位源码中信息。',
`extra` varchar(2048) COMMENT '扩展信息',
`logTime` datetime COMMENT '日志时间',
`createUserId` bigint(20) COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='异常日志';
-- ----------------------------
-- 平台用户操作日志业务表
-- ----------------------------
......
......@@ -35,7 +35,8 @@
"vue-cropper": "0.5.5",
"vue-router": "3.4.9",
"vue2-org-tree": "^1.3.5",
"vuex": "3.6.0"
"vuex": "3.6.0",
"highlight.js": "11.6.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.6",
......@@ -36,7 +36,8 @@
"vue-cropper": "0.5.5",
"vue-router": "3.4.9",
"vue2-org-tree": "^1.3.5",
"vuex": "3.6.0"
"vuex": "3.6.0",
"highlight.js": "11.6.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.6",
......
......@@ -4,22 +4,29 @@
:title="title"
:visible.sync="open"
:direction="direction"
size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
size="70%">
<el-form ref="form" :model="form" :rules="rules" label-width="140px">
<el-row>
<Field label="追踪Id" prop="traceID" v-model="form.traceID" placeholder="请输入追踪Id"/>
<Field label="服务类型,webOS,android,IOS,服务后端" prop="serverType" v-model="form.serverType" placeholder="请输入服务类型,webOS,android,IOS,服务后端"/>
<Field label="应用名称" prop="appName" v-model="form.appName" placeholder="请输入应用名称"/>
<Field label="实例IP" prop="hostName" v-model="form.hostName" placeholder="请输入实例IP"/>
<Field label="日志等级" prop="logLevel" v-model="form.logLevel" placeholder="请输入日志等级"/>
<Field label="追踪Id" prop="traceID" v-model="form.traceID" placeholder="请输入追踪Id"/>
<Field label="应用名称" prop="appName" v-model="form.appName" placeholder="请输入应用名称,宿主客户端运行唯一标识。"/>
<Field label="主机名" prop="hostName" v-model="form.hostName" placeholder="请输入主机名"/>
<Field label="消息标识" prop="message" v-model="form.message" placeholder="请输入消息标识,如用户登录异常。"/>
<Field label="客户端使用平台" prop="platform" v-model="form.platform" type="select" :enumData="dict.platform" placeholder="请选择当前客户端使用平台"/>
<Field label="异常函数名" prop="culprit" v-model="form.culprit" placeholder="请输入主要导致异常函数或方法调用名称"/>
<Field label="异常事件标记。" prop="tags" v-model="form.tags" placeholder="请输入异常事件标记,多个逗号分隔。用以归集异常事件种类。"/>
<Field label="告警等级" prop="level" v-model="form.level" type="select" :enumData="dict.level" placeholder="请选择等级"/>
<Field label="环境变量信息" prop="environment" v-model="form.environment" placeholder="请输入客户端运行环境变量信息"/>
<Field label="版本信息" prop="releaseVersion" v-model="form.releaseVersion" placeholder="请输入客户端运行版本信息"/>
<Field label="指纹标识" prop="fingerprint" v-model="form.fingerprint" placeholder="请输入指纹标识,对于相同异常事件归集数量使用。"/>
<Field label="线程号" prop="threadNo" v-model="form.threadNo" placeholder="请输入线程号"/>
<Field label="异常堆栈信息" prop="error" v-model="form.error" type="textarea" placeholder="请输入异常堆栈信息"/>
<Field label="响应结果" prop="response" v-model="form.response" type="textarea" placeholder="请输入响应结果"/>
<Field label="日志产生时间" prop="logTime" v-model="form.logTime" type="date" />
<Field label="异常事件数量" prop="checkNum" v-model="form.checkNum" placeholder="请输入针对同一个异常事件,数量加1"/>
<Field label="日志时间" prop="logTime" v-model="form.logTime" type="date" />
<Field label="异常堆栈信息" :span="24" prop="errorStack" v-model="form.errorStack" rows="6" type="textarea" placeholder="请输入异常堆栈信息"/>
<Field label="上下文信息" :span="24" prop="context" v-model="form.context" type="textarea" placeholder="请输入上下文信息,如js中发送异常事件,定位源码中信息。"/>
<Field label="扩展信息" :span="24" prop="extra" v-model="form.extra" type="textarea" placeholder="请输入扩展信息"/>
</el-row>
<form-buttons @submit='submitForm' noCancelBtn />
</el-form>
</el-drawer>
......@@ -104,13 +111,21 @@
reset() {
this.form = {
traceID : "",
serverType : "",
appName : "",
hostName : "",
logLevel : "",
message : "",
platform : "java",
culprit : "",
tags : "",
level : "",
environment : "",
releaseVersion : "",
fingerprint : "",
threadNo : "",
error : "",
response : "",
checkNum : null,
errorStack : "",
context : "",
extra : "",
logTime : null,
};
this.resetForm("form");
......
<template>
<div class="page">
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
<LayoutTable notAdd notDel :data="tableData" :config="tableConfig">
</LayoutTable>
......@@ -43,47 +43,43 @@
{
name: "traceID",
type: "text",
label: "TraceID",
fuzzy: true
},
{
name: "serverType",
type: "text",
label: "服务类型,webOS,android,IOS,服务后端",
label: "追踪Id",
fuzzy: true
},
{
name: "appName",
type: "text",
label: "应用名称",
fuzzy: true
},
{
name: "logTime",
type: "date",
label: "日志产生时间",
label: "应用名称,宿主客户端运行唯一标识。",
fuzzy: true
},
],
columns: [
{type: "index",label: "序号",width: 50 ,align:"center"},
{type: "index",label: "序号",align:"center",width: 50},
{label: "TraceID", prop: "traceID"},
{label: "服务类型", prop: "serverType"},
{label: "追踪Id", prop: "traceID"},
{label: "应用名称", prop: "appName"},
{label: "线程号", prop: "threadNo"},
{label: "主机名", prop: "hostName"},
{label: "消息标识", prop: "message"},
{label: "当前客户端使用平台", prop: "platform",formatter:this.formatter},
{label: "异常事件标记", prop: "tags"},
{label: "警告等级", prop: "level",formatter: this.formatter},
{label: "异常事件数量", prop: "checkNum"},
{label: "日志产生时间", prop: "logTime", formatter: this.formatterDate},
{label: "日志时间", prop: "logTime", formatter: this.formatterDate},
{
label: "操作",
width: 240,
width: 120,
formatter: row => {
return (
<table-buttons noAdd noDel noEdit row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
<table-buttons noAdd noEdit noDel row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} />
);
}
}
......
......@@ -11,28 +11,52 @@
<el-descriptions-item label="追踪Id" label-class-name="labelClass" content-class-name="contentClass">
{{form.traceID}}
</el-descriptions-item>
<el-descriptions-item label="服务类型,webOS,android,IOS,服务后端" label-class-name="labelClass" content-class-name="contentClass">
{{form.serverType}}
</el-descriptions-item>
<el-descriptions-item label="应用名称" label-class-name="labelClass" content-class-name="contentClass">
<el-descriptions-item label="应用名称,宿主客户端运行唯一标识。" label-class-name="labelClass" content-class-name="contentClass">
{{form.appName}}
</el-descriptions-item>
<el-descriptions-item label="实例IP" label-class-name="labelClass" content-class-name="contentClass">
<el-descriptions-item label="主机名" label-class-name="labelClass" content-class-name="contentClass">
{{form.hostName}}
</el-descriptions-item>
<el-descriptions-item label="日志等级" label-class-name="labelClass" content-class-name="contentClass">
{{form.logLevel}}
<el-descriptions-item label="消息标识,如用户登录异常。" label-class-name="labelClass" content-class-name="contentClass">
{{form.message}}
</el-descriptions-item>
<el-descriptions-item label="当前客户端使用平台" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("platform", form.platform) }}
</el-descriptions-item>
<el-descriptions-item label="主要导致异常函数或方法调用名称" label-class-name="labelClass" content-class-name="contentClass">
{{form.culprit}}
</el-descriptions-item>
<el-descriptions-item label="异常事件标记,多个逗号分隔。用以归集异常事件种类。" label-class-name="labelClass" content-class-name="contentClass">
{{form.tags}}
</el-descriptions-item>
<el-descriptions-item label="等级" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatters("level", form.level) }}
</el-descriptions-item>
<el-descriptions-item label="客户端运行环境变量信息" label-class-name="labelClass" content-class-name="contentClass">
{{form.environment}}
</el-descriptions-item>
<el-descriptions-item label="客户端运行版本信息" label-class-name="labelClass" content-class-name="contentClass">
{{form.releaseVersion}}
</el-descriptions-item>
<el-descriptions-item label="指纹标识,对于相同异常事件归集数量使用。" label-class-name="labelClass" content-class-name="contentClass">
{{form.fingerprint}}
</el-descriptions-item>
<el-descriptions-item label="线程号" label-class-name="labelClass" content-class-name="contentClass">
{{form.threadNo}}
</el-descriptions-item>
<el-descriptions-item label="针对同一个异常事件,数量加1" label-class-name="labelClass" content-class-name="contentClass">
{{form.checkNum}}
</el-descriptions-item>
<el-descriptions-item label="异常堆栈信息" label-class-name="labelClass" content-class-name="contentClass">
{{form.error}}
{{form.errorStack}}
</el-descriptions-item>
<el-descriptions-item label="上下文信息,如js中发送异常事件,定位源码中信息。" label-class-name="labelClass" content-class-name="contentClass">
{{form.context}}
</el-descriptions-item>
<el-descriptions-item label="响应结果" label-class-name="labelClass" content-class-name="contentClass">
{{form.response}}
<el-descriptions-item label="扩展信息" label-class-name="labelClass" content-class-name="contentClass">
{{form.extra}}
</el-descriptions-item>
<el-descriptions-item label="日志产生时间" label-class-name="labelClass" content-class-name="contentClass">
<el-descriptions-item label="日志时间" label-class-name="labelClass" content-class-name="contentClass">
{{ util_formatterDate(form.logTime)}}
</el-descriptions-item>
</el-descriptions>
......
......@@ -4959,6 +4959,11 @@ hex-color-regex@^1.1.0:
resolved "https://registry.nlark.com/hex-color-regex/download/hex-color-regex-1.1.0.tgz"
integrity sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=
highlight.js@11.6.0:
version "11.6.0"
resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.6.0.tgz#a50e9da05763f1bb0c1322c8f4f755242cff3f5a"
integrity sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==
highlight.js@^10.7.1:
version "10.7.3"
resolved "https://registry.nlark.com/highlight.js/download/highlight.js-10.7.3.tgz"
......
......@@ -23,7 +23,7 @@ import java.io.IOException;
* @author: zxfei
* @date: 2022/4/20 14:52
*/
@Component
//@Component
@Slf4j
public class RequestFilter extends OncePerRequestFilter implements Filter {
......
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 等级(FATAL,ERROR,WARNING,INFO,DEBUG)枚举类
*
* @author zxfei
*/
public enum LevelEnum {
FATAL("FATAL", "FATAL"),
ERROR("ERROR", "ERROR"),
WARNING("WARNING", "WARNING"),
INFO("INFO", "INFO"),
DEBUG("DEBUG", "DEBUG");
private String value;
private String desc;
LevelEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static LevelEnum getByValue(String value) {
for (LevelEnum levelEnum : LevelEnum.values()) {
if (levelEnum.getValue() == value) {
return levelEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (LevelEnum item : LevelEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 当前客户端使用平台(java,php,c#,android,vue,webos,ios,python)枚举类
*
* @author zxfei
*/
public enum PlatformEnum {
java("java", "java"),
php("php", "php"),
c("c#", "c#"),
android("android", "android"),
vue("vue", "vue"),
webos("webos", "webos"),
ios("ios", "ios"),
python("python", "python");
private String value;
private String desc;
PlatformEnum(String value, String desc) {
this.value = value;
this.desc = desc;
}
public String getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static PlatformEnum getByValue(String value) {
for (PlatformEnum platformEnum : PlatformEnum.values()) {
if (platformEnum.getValue() == value) {
return platformEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(String... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (PlatformEnum item : PlatformEnum.values()) {
try {
boolean hasE = false;
for (String e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
......@@ -29,8 +29,6 @@ public class AccessLogServiceImpl extends AbstractCRUDServiceImpl<AccessLogDao,
accessLogEntity.setCreateTime(new Date(generateDateTime));
return this.getDao().get(key,accessLogEntity);
//return super.get(key, context);
}
public static void main(String[] args) {
......
......@@ -8,8 +8,9 @@ import java.util.List;
* 异常日志 DAO接口
*
* @author zxfei
* @date 2022-08-17
* @date 2022-08-24
*/
public interface ErrorLogDao extends ICRUDSubmeterDao<ErrorLogEntity,Long>{
......
......@@ -17,7 +17,7 @@ import java.util.List;
* 异常日志DaoImpl DAO接口
*
* @author zxfei
* @date 2022-08-17
* @date 2022-08-24
*/
@Repository("errorLogDao")
public class ErrorLogDaoImpl extends SubmeterDaoImpl<ErrorLogEntity,Long> implements ErrorLogDao {
......@@ -48,6 +48,4 @@ public class ErrorLogDaoImpl extends SubmeterDaoImpl<ErrorLogEntity,Long> implem
}
......@@ -11,7 +11,7 @@ import com.mortals.xhx.module.error.model.vo.ErrorLogVo;
* 异常日志实体对象
*
* @author zxfei
* @date 2022-08-17
* @date 2022-08-24
*/
public class ErrorLogEntity extends ErrorLogVo {
......@@ -22,35 +22,67 @@ public class ErrorLogEntity extends ErrorLogVo {
*/
private String traceID;
/**
* 服务类型,webOS,android,IOS,服务后端
*/
private String serverType;
/**
* 应用名称
* 应用名称,宿主客户端运行唯一标识。
*/
private String appName;
/**
* 实例IP
* 主机名
*/
private String hostName;
/**
* 日志等级
* 消息标识,如用户登录异常。
*/
private String message;
/**
* 当前客户端使用平台(java,php,c#,android,vue,webos,ios,python)
*/
private String logLevel;
private String platform;
/**
* 主要导致异常函数或方法调用名称
*/
private String culprit;
/**
* 异常事件标记,多个逗号分隔。用以归集异常事件种类。
*/
private String tags;
/**
* 等级(FATAL,ERROR,WARNING,INFO,DEBUG)
*/
private String level;
/**
* 客户端运行环境变量信息
*/
private String environment;
/**
* 客户端运行版本信息
*/
private String releaseVersion;
/**
* 指纹标识,对于相同异常事件归集数量使用。
*/
private String fingerprint;
/**
* 线程号
*/
private String threadNo;
/**
* 针对同一个异常事件,数量加1
*/
private Integer checkNum;
/**
* 异常堆栈信息
*/
private String error;
private String errorStack;
/**
* 上下文信息,如js中发送异常事件,定位源码中信息。
*/
private String context;
/**
* 响应结果
* 扩展信息
*/
private String response;
private String extra;
/**
* 日志产生时间
* 日志时间
*/
private Date logTime;
......@@ -72,60 +104,144 @@ public class ErrorLogEntity extends ErrorLogVo {
this.traceID = traceID;
}
/**
* 获取 服务类型,webOS,android,IOS,服务后端
* @return String
*/
public String getServerType(){
return serverType;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverType
*/
public void setServerType(String serverType){
this.serverType = serverType;
}
/**
* 获取 应用名称
* 获取 应用名称,宿主客户端运行唯一标识。
* @return String
*/
public String getAppName(){
return appName;
}
/**
* 设置 应用名称
* 设置 应用名称,宿主客户端运行唯一标识。
* @param appName
*/
public void setAppName(String appName){
this.appName = appName;
}
/**
* 获取 实例IP
* 获取 主机名
* @return String
*/
public String getHostName(){
return hostName;
}
/**
* 设置 实例IP
* 设置 主机名
* @param hostName
*/
public void setHostName(String hostName){
this.hostName = hostName;
}
/**
* 获取 日志等级
* 获取 消息标识,如用户登录异常。
* @return String
*/
public String getLogLevel(){
return logLevel;
public String getMessage(){
return message;
}
/**
* 设置 日志等级
* @param logLevel
* 设置 消息标识,如用户登录异常。
* @param message
*/
public void setMessage(String message){
this.message = message;
}
/**
* 获取 当前客户端使用平台(java,php,c#,android,vue,webos,ios,python)
* @return String
*/
public String getPlatform(){
return platform;
}
/**
* 设置 当前客户端使用平台(java,php,c#,android,vue,webos,ios,python)
* @param platform
*/
public void setPlatform(String platform){
this.platform = platform;
}
/**
* 获取 主要导致异常函数或方法调用名称
* @return String
*/
public void setLogLevel(String logLevel){
this.logLevel = logLevel;
public String getCulprit(){
return culprit;
}
/**
* 设置 主要导致异常函数或方法调用名称
* @param culprit
*/
public void setCulprit(String culprit){
this.culprit = culprit;
}
/**
* 获取 异常事件标记,多个逗号分隔。用以归集异常事件种类。
* @return String
*/
public String getTags(){
return tags;
}
/**
* 设置 异常事件标记,多个逗号分隔。用以归集异常事件种类。
* @param tags
*/
public void setTags(String tags){
this.tags = tags;
}
/**
* 获取 等级(FATAL,ERROR,WARNING,INFO,DEBUG)
* @return String
*/
public String getLevel(){
return level;
}
/**
* 设置 等级(FATAL,ERROR,WARNING,INFO,DEBUG)
* @param level
*/
public void setLevel(String level){
this.level = level;
}
/**
* 获取 客户端运行环境变量信息
* @return String
*/
public String getEnvironment(){
return environment;
}
/**
* 设置 客户端运行环境变量信息
* @param environment
*/
public void setEnvironment(String environment){
this.environment = environment;
}
/**
* 获取 客户端运行版本信息
* @return String
*/
public String getReleaseVersion(){
return releaseVersion;
}
/**
* 设置 客户端运行版本信息
* @param releaseVersion
*/
public void setReleaseVersion(String releaseVersion){
this.releaseVersion = releaseVersion;
}
/**
* 获取 指纹标识,对于相同异常事件归集数量使用。
* @return String
*/
public String getFingerprint(){
return fingerprint;
}
/**
* 设置 指纹标识,对于相同异常事件归集数量使用。
* @param fingerprint
*/
public void setFingerprint(String fingerprint){
this.fingerprint = fingerprint;
}
/**
* 获取 线程号
......@@ -142,42 +258,70 @@ public class ErrorLogEntity extends ErrorLogVo {
this.threadNo = threadNo;
}
/**
* 获取 针对同一个异常事件,数量加1
* @return Integer
*/
public Integer getCheckNum(){
return checkNum;
}
/**
* 设置 针对同一个异常事件,数量加1
* @param checkNum
*/
public void setCheckNum(Integer checkNum){
this.checkNum = checkNum;
}
/**
* 获取 异常堆栈信息
* @return String
*/
public String getError(){
return error;
public String getErrorStack(){
return errorStack;
}
/**
* 设置 异常堆栈信息
* @param error
* @param errorStack
*/
public void setErrorStack(String errorStack){
this.errorStack = errorStack;
}
/**
* 获取 上下文信息,如js中发送异常事件,定位源码中信息。
* @return String
*/
public String getContext(){
return context;
}
/**
* 设置 上下文信息,如js中发送异常事件,定位源码中信息。
* @param context
*/
public void setError(String error){
this.error = error;
public void setContext(String context){
this.context = context;
}
/**
* 获取 响应结果
* 获取 扩展信息
* @return String
*/
public String getResponse(){
return response;
public String getExtra(){
return extra;
}
/**
* 设置 响应结果
* @param response
* 设置 扩展信息
* @param extra
*/
public void setResponse(String response){
this.response = response;
public void setExtra(String extra){
this.extra = extra;
}
/**
* 获取 日志产生时间
* 获取 日志时间
* @return Date
*/
public Date getLogTime(){
return logTime;
}
/**
* 设置 日志产生时间
* 设置 日志时间
* @param logTime
*/
public void setLogTime(Date logTime){
......@@ -206,13 +350,21 @@ public class ErrorLogEntity extends ErrorLogVo {
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",traceID:").append(getTraceID());
sb.append(",serverType:").append(getServerType());
sb.append(",appName:").append(getAppName());
sb.append(",hostName:").append(getHostName());
sb.append(",logLevel:").append(getLogLevel());
sb.append(",message:").append(getMessage());
sb.append(",platform:").append(getPlatform());
sb.append(",culprit:").append(getCulprit());
sb.append(",tags:").append(getTags());
sb.append(",level:").append(getLevel());
sb.append(",environment:").append(getEnvironment());
sb.append(",releaseVersion:").append(getReleaseVersion());
sb.append(",fingerprint:").append(getFingerprint());
sb.append(",threadNo:").append(getThreadNo());
sb.append(",error:").append(getError());
sb.append(",response:").append(getResponse());
sb.append(",checkNum:").append(getCheckNum());
sb.append(",errorStack:").append(getErrorStack());
sb.append(",context:").append(getContext());
sb.append(",extra:").append(getExtra());
sb.append(",logTime:").append(getLogTime());
return sb.toString();
}
......@@ -221,19 +373,35 @@ public class ErrorLogEntity extends ErrorLogVo {
this.traceID = "";
this.serverType = "";
this.appName = "";
this.hostName = "";
this.logLevel = "";
this.message = "";
this.platform = "java";
this.culprit = "";
this.tags = "";
this.level = "";
this.environment = "";
this.releaseVersion = "";
this.fingerprint = "";
this.threadNo = "";
this.error = "";
this.checkNum = null;
this.errorStack = "";
this.context = "";
this.response = "";
this.extra = "";
this.logTime = null;
}
......
......@@ -7,49 +7,82 @@ import com.mortals.xhx.module.error.model.ErrorLogEntity;
* 异常日志查询对象
*
* @author zxfei
* @date 2022-08-17
* @date 2022-08-24
*/
public class ErrorLogQuery extends ErrorLogEntity {
/** 开始 主键ID,主键,自增长 */
/** 开始 主键ID */
private Long idStart;
/** 结束 主键ID,主键,自增长 */
/** 结束 主键ID */
private Long idEnd;
/** 增加 主键ID,主键,自增长 */
/** 增加 主键ID */
private Long idIncrement;
/** 主键ID,主键,自增长列表 */
/** 主键ID列表 */
private List <Long> idList;
/** 追踪Id */
private List<String> traceIDList;
/** 服务类型,webOS,android,IOS,服务后端 */
private List<String> serverTypeList;
/** 应用名称 */
/** 应用名称,宿主客户端运行唯一标识。 */
private List<String> appNameList;
/** 实例IP */
/** 主机名 */
private List<String> hostNameList;
/** 日志等级 */
private List<String> logLevelList;
/** 消息标识,如用户登录异常。 */
private List<String> messageList;
/** 当前客户端使用平台(java,php,c#,android,vue,webos,ios,python) */
private List<String> platformList;
/** 主要导致异常函数或方法调用名称 */
private List<String> culpritList;
/** 异常事件标记,多个逗号分隔。用以归集异常事件种类。 */
private List<String> tagsList;
/** 等级(FATAL,ERROR,WARNING,INFO,DEBUG) */
private List<String> levelList;
/** 客户端运行环境变量信息 */
private List<String> environmentList;
/** 客户端运行版本信息 */
private List<String> releaseVersionList;
/** 指纹标识,对于相同异常事件归集数量使用。 */
private List<String> fingerprintList;
/** 线程号 */
private List<String> threadNoList;
/** 开始 针对同一个异常事件,数量加1 */
private Integer checkNumStart;
/** 结束 针对同一个异常事件,数量加1 */
private Integer checkNumEnd;
/** 增加 针对同一个异常事件,数量加1 */
private Integer checkNumIncrement;
/** 针对同一个异常事件,数量加1列表 */
private List <Integer> checkNumList;
/** 异常堆栈信息 */
private List<String> errorList;
private List<String> errorStackList;
/** 响应结果 */
private List<String> responseList;
/** 上下文信息,如js中发送异常事件,定位源码中信息。 */
private List<String> contextList;
/** 开始 日志产生时间 */
/** 扩展信息 */
private List<String> extraList;
/** 开始 日志时间 */
private String logTimeStart;
/** 结束 日志产生时间 */
/** 结束 日志时间 */
private String logTimeEnd;
/** 开始 创建用户 */
......@@ -79,7 +112,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
public ErrorLogQuery(){}
/**
* 获取 开始 主键ID,主键,自增长
* 获取 开始 主键ID
* @return idStart
*/
public Long getIdStart(){
......@@ -87,7 +120,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 开始 主键ID,主键,自增长
* 设置 开始 主键ID
* @param idStart
*/
public void setIdStart(Long idStart){
......@@ -95,7 +128,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 获取 结束 主键ID,主键,自增长
* 获取 结束 主键ID
* @return $idEnd
*/
public Long getIdEnd(){
......@@ -103,7 +136,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 结束 主键ID,主键,自增长
* 设置 结束 主键ID
* @param idEnd
*/
public void setIdEnd(Long idEnd){
......@@ -111,7 +144,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 获取 增加 主键ID,主键,自增长
* 获取 增加 主键ID
* @return idIncrement
*/
public Long getIdIncrement(){
......@@ -119,7 +152,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 增加 主键ID,主键,自增长
* 设置 增加 主键ID
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
......@@ -127,7 +160,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 获取 主键ID,主键,自增长
* 获取 主键ID
* @return idList
*/
public List<Long> getIdList(){
......@@ -135,7 +168,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 主键ID,主键,自增长
* 设置 主键ID
* @param idList
*/
public void setIdList(List<Long> idList){
......@@ -158,22 +191,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
this.traceIDList = traceIDList;
}
/**
* 获取 服务类型,webOS,android,IOS,服务后端
* @return serverTypeList
*/
public List<String> getServerTypeList(){
return this.serverTypeList;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverTypeList
*/
public void setServerTypeList(List<String> serverTypeList){
this.serverTypeList = serverTypeList;
}
/**
* 获取 应用名称
* 获取 应用名称,宿主客户端运行唯一标识。
* @return appNameList
*/
public List<String> getAppNameList(){
......@@ -181,14 +199,14 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 应用名称
* 设置 应用名称,宿主客户端运行唯一标识。
* @param appNameList
*/
public void setAppNameList(List<String> appNameList){
this.appNameList = appNameList;
}
/**
* 获取 实例IP
* 获取 主机名
* @return hostNameList
*/
public List<String> getHostNameList(){
......@@ -196,26 +214,131 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 实例IP
* 设置 主机名
* @param hostNameList
*/
public void setHostNameList(List<String> hostNameList){
this.hostNameList = hostNameList;
}
/**
* 获取 日志等级
* @return logLevelList
* 获取 消息标识,如用户登录异常。
* @return messageList
*/
public List<String> getMessageList(){
return this.messageList;
}
/**
* 设置 消息标识,如用户登录异常。
* @param messageList
*/
public void setMessageList(List<String> messageList){
this.messageList = messageList;
}
/**
* 获取 当前客户端使用平台(java,php,c#,android,vue,webos,ios,python)
* @return platformList
*/
public List<String> getPlatformList(){
return this.platformList;
}
/**
* 设置 当前客户端使用平台(java,php,c#,android,vue,webos,ios,python)
* @param platformList
*/
public void setPlatformList(List<String> platformList){
this.platformList = platformList;
}
/**
* 获取 主要导致异常函数或方法调用名称
* @return culpritList
*/
public List<String> getCulpritList(){
return this.culpritList;
}
/**
* 设置 主要导致异常函数或方法调用名称
* @param culpritList
*/
public void setCulpritList(List<String> culpritList){
this.culpritList = culpritList;
}
/**
* 获取 异常事件标记,多个逗号分隔。用以归集异常事件种类。
* @return tagsList
*/
public List<String> getTagsList(){
return this.tagsList;
}
/**
* 设置 异常事件标记,多个逗号分隔。用以归集异常事件种类。
* @param tagsList
*/
public void setTagsList(List<String> tagsList){
this.tagsList = tagsList;
}
/**
* 获取 等级(FATAL,ERROR,WARNING,INFO,DEBUG)
* @return levelList
*/
public List<String> getLevelList(){
return this.levelList;
}
/**
* 设置 等级(FATAL,ERROR,WARNING,INFO,DEBUG)
* @param levelList
*/
public void setLevelList(List<String> levelList){
this.levelList = levelList;
}
/**
* 获取 客户端运行环境变量信息
* @return environmentList
*/
public List<String> getEnvironmentList(){
return this.environmentList;
}
/**
* 设置 客户端运行环境变量信息
* @param environmentList
*/
public void setEnvironmentList(List<String> environmentList){
this.environmentList = environmentList;
}
/**
* 获取 客户端运行版本信息
* @return releaseVersionList
*/
public List<String> getLogLevelList(){
return this.logLevelList;
public List<String> getReleaseVersionList(){
return this.releaseVersionList;
}
/**
* 设置 日志等级
* @param logLevelList
* 设置 客户端运行版本信息
* @param releaseVersionList
*/
public void setLogLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
public void setReleaseVersionList(List<String> releaseVersionList){
this.releaseVersionList = releaseVersionList;
}
/**
* 获取 指纹标识,对于相同异常事件归集数量使用。
* @return fingerprintList
*/
public List<String> getFingerprintList(){
return this.fingerprintList;
}
/**
* 设置 指纹标识,对于相同异常事件归集数量使用。
* @param fingerprintList
*/
public void setFingerprintList(List<String> fingerprintList){
this.fingerprintList = fingerprintList;
}
/**
* 获取 线程号
......@@ -232,38 +355,117 @@ public class ErrorLogQuery extends ErrorLogEntity {
public void setThreadNoList(List<String> threadNoList){
this.threadNoList = threadNoList;
}
/**
* 获取 开始 针对同一个异常事件,数量加1
* @return checkNumStart
*/
public Integer getCheckNumStart(){
return this.checkNumStart;
}
/**
* 设置 开始 针对同一个异常事件,数量加1
* @param checkNumStart
*/
public void setCheckNumStart(Integer checkNumStart){
this.checkNumStart = checkNumStart;
}
/**
* 获取 结束 针对同一个异常事件,数量加1
* @return $checkNumEnd
*/
public Integer getCheckNumEnd(){
return this.checkNumEnd;
}
/**
* 设置 结束 针对同一个异常事件,数量加1
* @param checkNumEnd
*/
public void setCheckNumEnd(Integer checkNumEnd){
this.checkNumEnd = checkNumEnd;
}
/**
* 获取 增加 针对同一个异常事件,数量加1
* @return checkNumIncrement
*/
public Integer getCheckNumIncrement(){
return this.checkNumIncrement;
}
/**
* 设置 增加 针对同一个异常事件,数量加1
* @param checkNumIncrement
*/
public void setCheckNumIncrement(Integer checkNumIncrement){
this.checkNumIncrement = checkNumIncrement;
}
/**
* 获取 针对同一个异常事件,数量加1
* @return checkNumList
*/
public List<Integer> getCheckNumList(){
return this.checkNumList;
}
/**
* 设置 针对同一个异常事件,数量加1
* @param checkNumList
*/
public void setCheckNumList(List<Integer> checkNumList){
this.checkNumList = checkNumList;
}
/**
* 获取 异常堆栈信息
* @return errorList
* @return errorStackList
*/
public List<String> getErrorList(){
return this.errorList;
public List<String> getErrorStackList(){
return this.errorStackList;
}
/**
* 设置 异常堆栈信息
* @param errorList
* @param errorStackList
*/
public void setErrorList(List<String> errorList){
this.errorList = errorList;
public void setErrorStackList(List<String> errorStackList){
this.errorStackList = errorStackList;
}
/**
* 获取 响应结果
* @return responseList
* 获取 上下文信息,如js中发送异常事件,定位源码中信息。
* @return contextList
*/
public List<String> getResponseList(){
return this.responseList;
public List<String> getContextList(){
return this.contextList;
}
/**
* 设置 响应结果
* @param responseList
* 设置 上下文信息,如js中发送异常事件,定位源码中信息。
* @param contextList
*/
public void setResponseList(List<String> responseList){
this.responseList = responseList;
public void setContextList(List<String> contextList){
this.contextList = contextList;
}
/**
* 获取 开始 日志产生时间
* 获取 扩展信息
* @return extraList
*/
public List<String> getExtraList(){
return this.extraList;
}
/**
* 设置 扩展信息
* @param extraList
*/
public void setExtraList(List<String> extraList){
this.extraList = extraList;
}
/**
* 获取 开始 日志时间
* @return logTimeStart
*/
public String getLogTimeStart(){
......@@ -271,7 +473,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 开始 日志产生时间
* 设置 开始 日志时间
* @param logTimeStart
*/
public void setLogTimeStart(String logTimeStart){
......@@ -279,7 +481,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 获取 结束 日志产生时间
* 获取 结束 日志时间
* @return logTimeEnd
*/
public String getLogTimeEnd(){
......@@ -287,7 +489,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 结束 日志产生时间
* 设置 结束 日志时间
* @param logTimeEnd
*/
public void setLogTimeEnd(String logTimeEnd){
......@@ -391,7 +593,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 主键ID,主键,自增长
* 设置 主键ID
* @param id
*/
public ErrorLogQuery id(Long id){
......@@ -400,7 +602,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 开始 主键ID,主键,自增长
* 设置 开始 主键ID
* @param idStart
*/
public ErrorLogQuery idStart(Long idStart){
......@@ -409,7 +611,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 结束 主键ID,主键,自增长
* 设置 结束 主键ID
* @param idEnd
*/
public ErrorLogQuery idEnd(Long idEnd){
......@@ -418,7 +620,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 增加 主键ID,主键,自增长
* 设置 增加 主键ID
* @param idIncrement
*/
public ErrorLogQuery idIncrement(Long idIncrement){
......@@ -427,7 +629,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 主键ID,主键,自增长
* 设置 主键ID
* @param idList
*/
public ErrorLogQuery idList(List<Long> idList){
......@@ -456,26 +658,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverType
*/
public ErrorLogQuery serverType(String serverType){
setServerType(serverType);
return this;
}
/**
* 设置 服务类型,webOS,android,IOS,服务后端
* @param serverTypeList
*/
public ErrorLogQuery serverTypeList(List<String> serverTypeList){
this.serverTypeList = serverTypeList;
return this;
}
/**
* 设置 应用名称
* 设置 应用名称,宿主客户端运行唯一标识。
* @param appName
*/
public ErrorLogQuery appName(String appName){
......@@ -484,7 +667,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 应用名称
* 设置 应用名称,宿主客户端运行唯一标识。
* @param appNameList
*/
public ErrorLogQuery appNameList(List<String> appNameList){
......@@ -494,7 +677,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
/**
* 设置 实例IP
* 设置 主机名
* @param hostName
*/
public ErrorLogQuery hostName(String hostName){
......@@ -503,7 +686,7 @@ public class ErrorLogQuery extends ErrorLogEntity {
}
/**
* 设置 实例IP
* 设置 主机名
* @param hostNameList
*/
public ErrorLogQuery hostNameList(List<String> hostNameList){
......@@ -513,20 +696,153 @@ public class ErrorLogQuery extends ErrorLogEntity {
/**
* 设置 日志等级
* @param logLevel
* 设置 消息标识,如用户登录异常。
* @param message
*/
public ErrorLogQuery message(String message){
setMessage(message);
return this;
}
/**
* 设置 消息标识,如用户登录异常。
* @param messageList
*/
public ErrorLogQuery messageList(List<String> messageList){
this.messageList = messageList;
return this;
}
/**
* 设置 当前客户端使用平台(java,php,c#,android,vue,webos,ios,python)
* @param platform
*/
public ErrorLogQuery platform(String platform){
setPlatform(platform);
return this;
}
/**
* 设置 当前客户端使用平台(java,php,c#,android,vue,webos,ios,python)
* @param platformList
*/
public ErrorLogQuery platformList(List<String> platformList){
this.platformList = platformList;
return this;
}
/**
* 设置 主要导致异常函数或方法调用名称
* @param culprit
*/
public ErrorLogQuery culprit(String culprit){
setCulprit(culprit);
return this;
}
/**
* 设置 主要导致异常函数或方法调用名称
* @param culpritList
*/
public ErrorLogQuery culpritList(List<String> culpritList){
this.culpritList = culpritList;
return this;
}
/**
* 设置 异常事件标记,多个逗号分隔。用以归集异常事件种类。
* @param tags
*/
public ErrorLogQuery tags(String tags){
setTags(tags);
return this;
}
/**
* 设置 异常事件标记,多个逗号分隔。用以归集异常事件种类。
* @param tagsList
*/
public ErrorLogQuery tagsList(List<String> tagsList){
this.tagsList = tagsList;
return this;
}
/**
* 设置 等级(FATAL,ERROR,WARNING,INFO,DEBUG)
* @param level
*/
public ErrorLogQuery level(String level){
setLevel(level);
return this;
}
/**
* 设置 等级(FATAL,ERROR,WARNING,INFO,DEBUG)
* @param levelList
*/
public ErrorLogQuery levelList(List<String> levelList){
this.levelList = levelList;
return this;
}
/**
* 设置 客户端运行环境变量信息
* @param environment
*/
public ErrorLogQuery logLevel(String logLevel){
setLogLevel(logLevel);
public ErrorLogQuery environment(String environment){
setEnvironment(environment);
return this;
}
/**
* 设置 日志等级
* @param logLevelList
* 设置 客户端运行环境变量信息
* @param environmentList
*/
public ErrorLogQuery logLevelList(List<String> logLevelList){
this.logLevelList = logLevelList;
public ErrorLogQuery environmentList(List<String> environmentList){
this.environmentList = environmentList;
return this;
}
/**
* 设置 客户端运行版本信息
* @param releaseVersion
*/
public ErrorLogQuery releaseVersion(String releaseVersion){
setReleaseVersion(releaseVersion);
return this;
}
/**
* 设置 客户端运行版本信息
* @param releaseVersionList
*/
public ErrorLogQuery releaseVersionList(List<String> releaseVersionList){
this.releaseVersionList = releaseVersionList;
return this;
}
/**
* 设置 指纹标识,对于相同异常事件归集数量使用。
* @param fingerprint
*/
public ErrorLogQuery fingerprint(String fingerprint){
setFingerprint(fingerprint);
return this;
}
/**
* 设置 指纹标识,对于相同异常事件归集数量使用。
* @param fingerprintList
*/
public ErrorLogQuery fingerprintList(List<String> fingerprintList){
this.fingerprintList = fingerprintList;
return this;
}
......@@ -549,41 +865,105 @@ public class ErrorLogQuery extends ErrorLogEntity {
return this;
}
/**
* 设置 针对同一个异常事件,数量加1
* @param checkNum
*/
public ErrorLogQuery checkNum(Integer checkNum){
setCheckNum(checkNum);
return this;
}
/**
* 设置 开始 针对同一个异常事件,数量加1
* @param checkNumStart
*/
public ErrorLogQuery checkNumStart(Integer checkNumStart){
this.checkNumStart = checkNumStart;
return this;
}
/**
* 设置 结束 针对同一个异常事件,数量加1
* @param checkNumEnd
*/
public ErrorLogQuery checkNumEnd(Integer checkNumEnd){
this.checkNumEnd = checkNumEnd;
return this;
}
/**
* 设置 增加 针对同一个异常事件,数量加1
* @param checkNumIncrement
*/
public ErrorLogQuery checkNumIncrement(Integer checkNumIncrement){
this.checkNumIncrement = checkNumIncrement;
return this;
}
/**
* 设置 针对同一个异常事件,数量加1
* @param checkNumList
*/
public ErrorLogQuery checkNumList(List<Integer> checkNumList){
this.checkNumList = checkNumList;
return this;
}
/**
* 设置 异常堆栈信息
* @param error
* @param errorStack
*/
public ErrorLogQuery error(String error){
setError(error);
public ErrorLogQuery errorStack(String errorStack){
setErrorStack(errorStack);
return this;
}
/**
* 设置 异常堆栈信息
* @param errorList
* @param errorStackList
*/
public ErrorLogQuery errorStackList(List<String> errorStackList){
this.errorStackList = errorStackList;
return this;
}
/**
* 设置 上下文信息,如js中发送异常事件,定位源码中信息。
* @param context
*/
public ErrorLogQuery context(String context){
setContext(context);
return this;
}
/**
* 设置 上下文信息,如js中发送异常事件,定位源码中信息。
* @param contextList
*/
public ErrorLogQuery errorList(List<String> errorList){
this.errorList = errorList;
public ErrorLogQuery contextList(List<String> contextList){
this.contextList = contextList;
return this;
}
/**
* 设置 响应结果
* @param response
* 设置 扩展信息
* @param extra
*/
public ErrorLogQuery response(String response){
setResponse(response);
public ErrorLogQuery extra(String extra){
setExtra(extra);
return this;
}
/**
* 设置 响应结果
* @param responseList
* 设置 扩展信息
* @param extraList
*/
public ErrorLogQuery responseList(List<String> responseList){
this.responseList = responseList;
public ErrorLogQuery extraList(List<String> extraList){
this.extraList = extraList;
return this;
}
......
......@@ -7,7 +7,7 @@ import java.util.List;
* 异常日志视图对象
*
* @author zxfei
* @date 2022-08-17
* @date 2022-08-24
*/
public class ErrorLogVo extends BaseEntityLong {
......
......@@ -7,7 +7,7 @@ import com.mortals.xhx.module.error.model.ErrorLogEntity;
* 异常日志 service接口
*
* @author zxfei
* @date 2022-08-17
* @date 2022-08-24
*/
public interface ErrorLogService extends ICRUDService<ErrorLogEntity,Long>{
......
package com.mortals.xhx.module.error.service.impl;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import com.mortals.xhx.module.biz.model.BizLogEntity;
import com.mortals.xhx.module.access.model.AccessLogEntity;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
......@@ -9,18 +9,34 @@ import com.mortals.framework.model.Context;
import com.mortals.xhx.module.error.dao.ErrorLogDao;
import com.mortals.xhx.module.error.model.ErrorLogEntity;
import com.mortals.xhx.module.error.service.ErrorLogService;
import cn.hutool.core.util.IdUtil;
import java.util.Date;
import java.util.List;
/**
* ErrorLogService
* 异常日志 service实现
*
* @author zxfei
* @date 2022-08-17
*/
* ErrorLogService
* 异常日志 service实现
*
* @author zxfei
* @date 2022-08-24
*/
@Service("errorLogService")
public class ErrorLogServiceImpl extends AbstractCRUDServiceImpl<ErrorLogDao, ErrorLogEntity, Long> implements ErrorLogService {
@Override
protected void saveBefore(ErrorLogEntity entity, Context context) throws AppException {
//非系统自增,需这里设置主键
entity.setId(IdUtil.getSnowflake(0, 1).nextId());
super.saveBefore(entity, context);
}
@Override
public int save(List<ErrorLogEntity> list, Context context) throws AppException {
list.forEach(item->{
item.setId(IdUtil.getSnowflake(0, 1).nextId());
});
return super.save(list, context);
}
@Override
public ErrorLogEntity get(Long key, Context context) throws AppException {
......
......@@ -27,7 +27,7 @@ import static com.mortals.framework.ap.SysConstains.*;
* 异常日志
*
* @author zxfei
* @date 2022-08-17
* @date 2022-08-24
*/
@RestController
@RequestMapping("error/log")
......@@ -42,16 +42,16 @@ public class ErrorLogController extends BaseCRUDJsonBodyMappingController<ErrorL
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "platform", paramService.getParamBySecondOrganize("ErrorLog","platform"));
this.addDict(model, "level", paramService.getParamBySecondOrganize("ErrorLog","level"));
super.init(model, context);
}
@Override
protected void doListBefore(ErrorLogEntity query, Map<String, Object> model, Context context) throws AppException {
List<OrderCol> orderColList = new ArrayList<>();
orderColList.add(new OrderCol("createTime", OrderCol.DESCENDING));
query.setOrderColList(orderColList);
super.doListBefore(query, model, context);
}
}
\ No newline at end of file
......@@ -7,13 +7,21 @@
<resultMap type="ErrorLogEntity" id="ErrorLogEntity-Map">
<id property="id" column="id" />
<result property="traceID" column="traceID" />
<result property="serverType" column="serverType" />
<result property="appName" column="appName" />
<result property="hostName" column="hostName" />
<result property="logLevel" column="logLevel" />
<result property="message" column="message" />
<result property="platform" column="platform" />
<result property="culprit" column="culprit" />
<result property="tags" column="tags" />
<result property="level" column="level" />
<result property="environment" column="environment" />
<result property="releaseVersion" column="releaseVersion" />
<result property="fingerprint" column="fingerprint" />
<result property="threadNo" column="threadNo" />
<result property="error" column="error" />
<result property="response" column="response" />
<result property="checkNum" column="checkNum" />
<result property="errorStack" column="errorStack" />
<result property="context" column="context" />
<result property="extra" column="extra" />
<result property="logTime" column="logTime" />
<result property="createUserId" column="createUserId" />
<result property="createTime" column="createTime" />
......@@ -22,18 +30,26 @@
<update id="createTable" parameterType="paramDto">
CREATE TABLE `${tableName}`(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`traceID` varchar(64) COMMENT '追踪Id',
`serverType` varchar(64) COMMENT '服务类型,webOS,android,IOS,服务后端',
`appName` varchar(64) COMMENT '应用名称',
`hostName` varchar(64) COMMENT '实例IP',
`logLevel` varchar(64) COMMENT '日志等级',
`threadNo` varchar(64) COMMENT '线程号',
`error` text COMMENT '异常堆栈信息',
`response` text COMMENT '响应结果',
`logTime` datetime COMMENT '日志产生时间',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`id` bigint(20) COMMENT '主键ID',
`traceID` varchar(64) COMMENT '追踪Id',
`appName` varchar(64) COMMENT '应用名称,宿主客户端运行唯一标识。',
`hostName` varchar(64) COMMENT '主机名',
`message` varchar(256) COMMENT '消息标识,如用户登录异常。',
`platform` varchar(64) COMMENT '当前客户端使用平台(java,php,c#,android,vue,webos,ios,python)',
`culprit` varchar(512) COMMENT '主要导致异常函数或方法调用名称',
`tags` varchar(512) COMMENT '异常事件标记,多个逗号分隔。用以归集异常事件种类。',
`level` varchar(64) COMMENT '等级(FATAL,ERROR,WARNING,INFO,DEBUG)',
`environment` varchar(1024) COMMENT '客户端运行环境变量信息',
`releaseVersion` varchar(64) COMMENT '客户端运行版本信息',
`fingerprint` varchar(64) COMMENT '指纹标识,对于相同异常事件归集数量使用。',
`threadNo` varchar(64) COMMENT '线程号',
`checkNum` int(4) COMMENT '针对同一个异常事件,数量加1',
`errorStack` text COMMENT '异常堆栈信息',
`context` text COMMENT '上下文信息,如js中发送异常事件,定位源码中信息。',
`extra` varchar(2048) COMMENT '扩展信息',
`logTime` datetime COMMENT '日志时间',
`createUserId` bigint(20) COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='异常日志';
</update>
......@@ -47,26 +63,50 @@
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('traceID') or colPickMode == 1 and data.containsKey('traceID')))">
a.traceID,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('serverType') or colPickMode == 1 and data.containsKey('serverType')))">
a.serverType,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appName') or colPickMode == 1 and data.containsKey('appName')))">
a.appName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('hostName') or colPickMode == 1 and data.containsKey('hostName')))">
a.hostName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('logLevel') or colPickMode == 1 and data.containsKey('logLevel')))">
a.logLevel,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('message') or colPickMode == 1 and data.containsKey('message')))">
a.message,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('platform') or colPickMode == 1 and data.containsKey('platform')))">
a.platform,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('culprit') or colPickMode == 1 and data.containsKey('culprit')))">
a.culprit,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('tags') or colPickMode == 1 and data.containsKey('tags')))">
a.tags,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('level') or colPickMode == 1 and data.containsKey('level')))">
a.level,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('environment') or colPickMode == 1 and data.containsKey('environment')))">
a.environment,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('releaseVersion') or colPickMode == 1 and data.containsKey('releaseVersion')))">
a.releaseVersion,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('fingerprint') or colPickMode == 1 and data.containsKey('fingerprint')))">
a.fingerprint,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('threadNo') or colPickMode == 1 and data.containsKey('threadNo')))">
a.threadNo,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('error') or colPickMode == 1 and data.containsKey('error')))">
a.error,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('checkNum') or colPickMode == 1 and data.containsKey('checkNum')))">
a.checkNum,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('errorStack') or colPickMode == 1 and data.containsKey('errorStack')))">
a.errorStack,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('context') or colPickMode == 1 and data.containsKey('context')))">
a.context,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('response') or colPickMode == 1 and data.containsKey('response')))">
a.response,
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('extra') or colPickMode == 1 and data.containsKey('extra')))">
a.extra,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('logTime') or colPickMode == 1 and data.containsKey('logTime')))">
a.logTime,
......@@ -80,20 +120,20 @@
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="ErrorLogEntity" useGeneratedKeys="true" keyProperty="id">
<insert id="insert" parameterType="ErrorLogEntity" >
insert into `${tableName}`
(traceID,serverType,appName,hostName,logLevel,threadNo,error,response,logTime,createUserId,createTime)
(id,traceID,appName,hostName,message,platform,culprit,tags,level,environment,releaseVersion,fingerprint,threadNo,checkNum,errorStack,context,extra,logTime,createUserId,createTime)
VALUES
(#{traceID},#{serverType},#{appName},#{hostName},#{logLevel},#{threadNo},#{error},#{response},#{logTime},#{createUserId},#{createTime})
(#{id},#{traceID},#{appName},#{hostName},#{message},#{platform},#{culprit},#{tags},#{level},#{environment},#{releaseVersion},#{fingerprint},#{threadNo},#{checkNum},#{errorStack},#{context},#{extra},#{logTime},#{createUserId},#{createTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into `${tableName}`
(traceID,serverType,appName,hostName,logLevel,threadNo,error,response,logTime,createUserId,createTime)
(id,traceID,appName,hostName,message,platform,culprit,tags,level,environment,releaseVersion,fingerprint,threadNo,checkNum,errorStack,context,extra,logTime,createUserId,createTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.traceID},#{item.serverType},#{item.appName},#{item.hostName},#{item.logLevel},#{item.threadNo},#{item.error},#{item.response},#{item.logTime},#{item.createUserId},#{item.createTime})
(#{item.id},#{item.traceID},#{item.appName},#{item.hostName},#{item.message},#{item.platform},#{item.culprit},#{item.tags},#{item.level},#{item.environment},#{item.releaseVersion},#{item.fingerprint},#{item.threadNo},#{item.checkNum},#{item.errorStack},#{item.context},#{item.extra},#{item.logTime},#{item.createUserId},#{item.createTime})
</foreach>
</insert>
......@@ -106,26 +146,53 @@
<if test="(colPickMode==0 and data.containsKey('traceID')) or (colPickMode==1 and !data.containsKey('traceID'))">
a.traceID=#{data.traceID},
</if>
<if test="(colPickMode==0 and data.containsKey('serverType')) or (colPickMode==1 and !data.containsKey('serverType'))">
a.serverType=#{data.serverType},
</if>
<if test="(colPickMode==0 and data.containsKey('appName')) or (colPickMode==1 and !data.containsKey('appName'))">
a.appName=#{data.appName},
</if>
<if test="(colPickMode==0 and data.containsKey('hostName')) or (colPickMode==1 and !data.containsKey('hostName'))">
a.hostName=#{data.hostName},
</if>
<if test="(colPickMode==0 and data.containsKey('logLevel')) or (colPickMode==1 and !data.containsKey('logLevel'))">
a.logLevel=#{data.logLevel},
<if test="(colPickMode==0 and data.containsKey('message')) or (colPickMode==1 and !data.containsKey('message'))">
a.message=#{data.message},
</if>
<if test="(colPickMode==0 and data.containsKey('platform')) or (colPickMode==1 and !data.containsKey('platform'))">
a.platform=#{data.platform},
</if>
<if test="(colPickMode==0 and data.containsKey('culprit')) or (colPickMode==1 and !data.containsKey('culprit'))">
a.culprit=#{data.culprit},
</if>
<if test="(colPickMode==0 and data.containsKey('tags')) or (colPickMode==1 and !data.containsKey('tags'))">
a.tags=#{data.tags},
</if>
<if test="(colPickMode==0 and data.containsKey('level')) or (colPickMode==1 and !data.containsKey('level'))">
a.level=#{data.level},
</if>
<if test="(colPickMode==0 and data.containsKey('environment')) or (colPickMode==1 and !data.containsKey('environment'))">
a.environment=#{data.environment},
</if>
<if test="(colPickMode==0 and data.containsKey('releaseVersion')) or (colPickMode==1 and !data.containsKey('releaseVersion'))">
a.releaseVersion=#{data.releaseVersion},
</if>
<if test="(colPickMode==0 and data.containsKey('fingerprint')) or (colPickMode==1 and !data.containsKey('fingerprint'))">
a.fingerprint=#{data.fingerprint},
</if>
<if test="(colPickMode==0 and data.containsKey('threadNo')) or (colPickMode==1 and !data.containsKey('threadNo'))">
a.threadNo=#{data.threadNo},
</if>
<if test="(colPickMode==0 and data.containsKey('error')) or (colPickMode==1 and !data.containsKey('error'))">
a.error=#{data.error},
<if test="(colPickMode==0 and data.containsKey('checkNum')) or (colPickMode==1 and !data.containsKey('checkNum'))">
a.checkNum=#{data.checkNum},
</if>
<if test="(colPickMode==0 and data.containsKey('checkNumIncrement')) or (colPickMode==1 and !data.containsKey('checkNumIncrement'))">
a.checkNum=ifnull(a.checkNum,0) + #{data.checkNumIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('errorStack')) or (colPickMode==1 and !data.containsKey('errorStack'))">
a.errorStack=#{data.errorStack},
</if>
<if test="(colPickMode==0 and data.containsKey('response')) or (colPickMode==1 and !data.containsKey('response'))">
a.response=#{data.response},
<if test="(colPickMode==0 and data.containsKey('context')) or (colPickMode==1 and !data.containsKey('context'))">
a.context=#{data.context},
</if>
<if test="(colPickMode==0 and data.containsKey('extra')) or (colPickMode==1 and !data.containsKey('extra'))">
a.extra=#{data.extra},
</if>
<if test="(colPickMode==0 and data.containsKey('logTime')) or (colPickMode==1 and !data.containsKey('logTime'))">
a.logTime=#{data.logTime},
......@@ -158,13 +225,6 @@
</if>
</foreach>
</trim>
<trim prefix="serverType=(case" suffix="ELSE serverType end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('serverType')) or (colPickMode==1 and !item.containsKey('serverType'))">
when a.id=#{item.id} then #{item.serverType}
</if>
</foreach>
</trim>
<trim prefix="appName=(case" suffix="ELSE appName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('appName')) or (colPickMode==1 and !item.containsKey('appName'))">
......@@ -179,10 +239,59 @@
</if>
</foreach>
</trim>
<trim prefix="logLevel=(case" suffix="ELSE logLevel end),">
<trim prefix="message=(case" suffix="ELSE message end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('message')) or (colPickMode==1 and !item.containsKey('message'))">
when a.id=#{item.id} then #{item.message}
</if>
</foreach>
</trim>
<trim prefix="platform=(case" suffix="ELSE platform end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('platform')) or (colPickMode==1 and !item.containsKey('platform'))">
when a.id=#{item.id} then #{item.platform}
</if>
</foreach>
</trim>
<trim prefix="culprit=(case" suffix="ELSE culprit end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('culprit')) or (colPickMode==1 and !item.containsKey('culprit'))">
when a.id=#{item.id} then #{item.culprit}
</if>
</foreach>
</trim>
<trim prefix="tags=(case" suffix="ELSE tags end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('tags')) or (colPickMode==1 and !item.containsKey('tags'))">
when a.id=#{item.id} then #{item.tags}
</if>
</foreach>
</trim>
<trim prefix="level=(case" suffix="ELSE level end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('level')) or (colPickMode==1 and !item.containsKey('level'))">
when a.id=#{item.id} then #{item.level}
</if>
</foreach>
</trim>
<trim prefix="environment=(case" suffix="ELSE environment end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('environment')) or (colPickMode==1 and !item.containsKey('environment'))">
when a.id=#{item.id} then #{item.environment}
</if>
</foreach>
</trim>
<trim prefix="releaseVersion=(case" suffix="ELSE releaseVersion end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('logLevel')) or (colPickMode==1 and !item.containsKey('logLevel'))">
when a.id=#{item.id} then #{item.logLevel}
<if test="(colPickMode==0 and item.containsKey('releaseVersion')) or (colPickMode==1 and !item.containsKey('releaseVersion'))">
when a.id=#{item.id} then #{item.releaseVersion}
</if>
</foreach>
</trim>
<trim prefix="fingerprint=(case" suffix="ELSE fingerprint end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('fingerprint')) or (colPickMode==1 and !item.containsKey('fingerprint'))">
when a.id=#{item.id} then #{item.fingerprint}
</if>
</foreach>
</trim>
......@@ -193,17 +302,36 @@
</if>
</foreach>
</trim>
<trim prefix="error=(case" suffix="ELSE error end),">
<trim prefix="checkNum=(case" suffix="ELSE checkNum end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('checkNum')) or (colPickMode==1 and !item.containsKey('checkNum'))">
when a.id=#{item.id} then #{item.checkNum}
</when>
<when test="(colPickMode==0 and item.containsKey('checkNumIncrement')) or (colPickMode==1 and !item.containsKey('checkNumIncrement'))">
when a.id=#{item.id} then ifnull(a.checkNum,0) + #{item.checkNumIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="errorStack=(case" suffix="ELSE errorStack end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('errorStack')) or (colPickMode==1 and !item.containsKey('errorStack'))">
when a.id=#{item.id} then #{item.errorStack}
</if>
</foreach>
</trim>
<trim prefix="context=(case" suffix="ELSE context end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('error')) or (colPickMode==1 and !item.containsKey('error'))">
when a.id=#{item.id} then #{item.error}
<if test="(colPickMode==0 and item.containsKey('context')) or (colPickMode==1 and !item.containsKey('context'))">
when a.id=#{item.id} then #{item.context}
</if>
</foreach>
</trim>
<trim prefix="response=(case" suffix="ELSE response end),">
<trim prefix="extra=(case" suffix="ELSE extra end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('response')) or (colPickMode==1 and !item.containsKey('response'))">
when a.id=#{item.id} then #{item.response}
<if test="(colPickMode==0 and item.containsKey('extra')) or (colPickMode==1 and !item.containsKey('extra'))">
when a.id=#{item.id} then #{item.extra}
</if>
</foreach>
</trim>
......@@ -371,21 +499,6 @@
</foreach>
</if>
<if test="conditionParamRef.containsKey('serverType')">
<if test="conditionParamRef.serverType != null and conditionParamRef.serverType != ''">
${_conditionType_} a.serverType like #{${_conditionParam_}.serverType}
</if>
<if test="conditionParamRef.serverType == null">
${_conditionType_} a.serverType is null
</if>
</if>
<if test="conditionParamRef.containsKey('serverTypeList')">
${_conditionType_} a.serverType in
<foreach collection="conditionParamRef.serverTypeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('appName')">
<if test="conditionParamRef.appName != null and conditionParamRef.appName != ''">
${_conditionType_} a.appName like #{${_conditionParam_}.appName}
......@@ -416,17 +529,122 @@
</foreach>
</if>
<if test="conditionParamRef.containsKey('logLevel')">
<if test="conditionParamRef.logLevel != null and conditionParamRef.logLevel != ''">
${_conditionType_} a.logLevel like #{${_conditionParam_}.logLevel}
<if test="conditionParamRef.containsKey('message')">
<if test="conditionParamRef.message != null and conditionParamRef.message != ''">
${_conditionType_} a.message like #{${_conditionParam_}.message}
</if>
<if test="conditionParamRef.message == null">
${_conditionType_} a.message is null
</if>
</if>
<if test="conditionParamRef.containsKey('messageList')">
${_conditionType_} a.message in
<foreach collection="conditionParamRef.messageList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('platform')">
<if test="conditionParamRef.platform != null and conditionParamRef.platform != ''">
${_conditionType_} a.platform like #{${_conditionParam_}.platform}
</if>
<if test="conditionParamRef.logLevel == null">
${_conditionType_} a.logLevel is null
<if test="conditionParamRef.platform == null">
${_conditionType_} a.platform is null
</if>
</if>
<if test="conditionParamRef.containsKey('logLevelList')">
${_conditionType_} a.logLevel in
<foreach collection="conditionParamRef.logLevelList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('platformList')">
${_conditionType_} a.platform in
<foreach collection="conditionParamRef.platformList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('culprit')">
<if test="conditionParamRef.culprit != null and conditionParamRef.culprit != ''">
${_conditionType_} a.culprit like #{${_conditionParam_}.culprit}
</if>
<if test="conditionParamRef.culprit == null">
${_conditionType_} a.culprit is null
</if>
</if>
<if test="conditionParamRef.containsKey('culpritList')">
${_conditionType_} a.culprit in
<foreach collection="conditionParamRef.culpritList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('tags')">
<if test="conditionParamRef.tags != null and conditionParamRef.tags != ''">
${_conditionType_} a.tags like #{${_conditionParam_}.tags}
</if>
<if test="conditionParamRef.tags == null">
${_conditionType_} a.tags is null
</if>
</if>
<if test="conditionParamRef.containsKey('tagsList')">
${_conditionType_} a.tags in
<foreach collection="conditionParamRef.tagsList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('level')">
<if test="conditionParamRef.level != null and conditionParamRef.level != ''">
${_conditionType_} a.level like #{${_conditionParam_}.level}
</if>
<if test="conditionParamRef.level == null">
${_conditionType_} a.level is null
</if>
</if>
<if test="conditionParamRef.containsKey('levelList')">
${_conditionType_} a.level in
<foreach collection="conditionParamRef.levelList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('environment')">
<if test="conditionParamRef.environment != null and conditionParamRef.environment != ''">
${_conditionType_} a.environment like #{${_conditionParam_}.environment}
</if>
<if test="conditionParamRef.environment == null">
${_conditionType_} a.environment is null
</if>
</if>
<if test="conditionParamRef.containsKey('environmentList')">
${_conditionType_} a.environment in
<foreach collection="conditionParamRef.environmentList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('releaseVersion')">
<if test="conditionParamRef.releaseVersion != null and conditionParamRef.releaseVersion != ''">
${_conditionType_} a.releaseVersion like #{${_conditionParam_}.releaseVersion}
</if>
<if test="conditionParamRef.releaseVersion == null">
${_conditionType_} a.releaseVersion is null
</if>
</if>
<if test="conditionParamRef.containsKey('releaseVersionList')">
${_conditionType_} a.releaseVersion in
<foreach collection="conditionParamRef.releaseVersionList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('fingerprint')">
<if test="conditionParamRef.fingerprint != null and conditionParamRef.fingerprint != ''">
${_conditionType_} a.fingerprint like #{${_conditionParam_}.fingerprint}
</if>
<if test="conditionParamRef.fingerprint == null">
${_conditionType_} a.fingerprint is null
</if>
</if>
<if test="conditionParamRef.containsKey('fingerprintList')">
${_conditionType_} a.fingerprint in
<foreach collection="conditionParamRef.fingerprintList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
......@@ -445,33 +663,69 @@
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('checkNum')">
<if test="conditionParamRef.checkNum != null ">
${_conditionType_} a.checkNum = #{${_conditionParam_}.checkNum}
</if>
<if test="conditionParamRef.checkNum == null">
${_conditionType_} a.checkNum is null
</if>
</if>
<if test="conditionParamRef.containsKey('checkNumList')">
${_conditionType_} a.checkNum in
<foreach collection="conditionParamRef.checkNumList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('checkNumStart') and conditionParamRef.checkNumStart != null">
${_conditionType_} a.checkNum <![CDATA[ >= ]]> #{${_conditionParam_}.checkNumStart}
</if>
<if test="conditionParamRef.containsKey('checkNumEnd') and conditionParamRef.checkNumEnd != null">
${_conditionType_} a.checkNum <![CDATA[ <= ]]> #{${_conditionParam_}.checkNumEnd}
</if>
<if test="conditionParamRef.containsKey('errorStack')">
<if test="conditionParamRef.errorStack != null and conditionParamRef.errorStack != ''">
${_conditionType_} a.errorStack like #{${_conditionParam_}.errorStack}
</if>
<if test="conditionParamRef.errorStack == null">
${_conditionType_} a.errorStack is null
</if>
</if>
<if test="conditionParamRef.containsKey('errorStackList')">
${_conditionType_} a.errorStack in
<foreach collection="conditionParamRef.errorStackList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('error')">
<if test="conditionParamRef.error != null and conditionParamRef.error != ''">
${_conditionType_} a.error like #{${_conditionParam_}.error}
<if test="conditionParamRef.containsKey('context')">
<if test="conditionParamRef.context != null and conditionParamRef.context != ''">
${_conditionType_} a.context like #{${_conditionParam_}.context}
</if>
<if test="conditionParamRef.error == null">
${_conditionType_} a.error is null
<if test="conditionParamRef.context == null">
${_conditionType_} a.context is null
</if>
</if>
<if test="conditionParamRef.containsKey('errorList')">
${_conditionType_} a.error in
<foreach collection="conditionParamRef.errorList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('contextList')">
${_conditionType_} a.context in
<foreach collection="conditionParamRef.contextList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('response')">
<if test="conditionParamRef.response != null and conditionParamRef.response != ''">
${_conditionType_} a.response like #{${_conditionParam_}.response}
<if test="conditionParamRef.containsKey('extra')">
<if test="conditionParamRef.extra != null and conditionParamRef.extra != ''">
${_conditionType_} a.extra like #{${_conditionParam_}.extra}
</if>
<if test="conditionParamRef.response == null">
${_conditionType_} a.response is null
<if test="conditionParamRef.extra == null">
${_conditionType_} a.extra is null
</if>
</if>
<if test="conditionParamRef.containsKey('responseList')">
${_conditionType_} a.response in
<foreach collection="conditionParamRef.responseList" open="(" close=")" index="index" item="item" separator=",">
<if test="conditionParamRef.containsKey('extraList')">
${_conditionType_} a.extra in
<foreach collection="conditionParamRef.extraList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
......@@ -549,11 +803,6 @@
<if test='orderCol.traceID != null and "DESC".equalsIgnoreCase(orderCol.traceID)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('serverType')">
a.serverType
<if test='orderCol.serverType != null and "DESC".equalsIgnoreCase(orderCol.serverType)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('appName')">
a.appName
<if test='orderCol.appName != null and "DESC".equalsIgnoreCase(orderCol.appName)'>DESC</if>
......@@ -564,9 +813,44 @@
<if test='orderCol.hostName != null and "DESC".equalsIgnoreCase(orderCol.hostName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('logLevel')">
a.logLevel
<if test='orderCol.logLevel != null and "DESC".equalsIgnoreCase(orderCol.logLevel)'>DESC</if>
<if test="orderCol.containsKey('message')">
a.message
<if test='orderCol.message != null and "DESC".equalsIgnoreCase(orderCol.message)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('platform')">
a.platform
<if test='orderCol.platform != null and "DESC".equalsIgnoreCase(orderCol.platform)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('culprit')">
a.culprit
<if test='orderCol.culprit != null and "DESC".equalsIgnoreCase(orderCol.culprit)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('tags')">
a.tags
<if test='orderCol.tags != null and "DESC".equalsIgnoreCase(orderCol.tags)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('level')">
a.level
<if test='orderCol.level != null and "DESC".equalsIgnoreCase(orderCol.level)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('environment')">
a.environment
<if test='orderCol.environment != null and "DESC".equalsIgnoreCase(orderCol.environment)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('releaseVersion')">
a.releaseVersion
<if test='orderCol.releaseVersion != null and "DESC".equalsIgnoreCase(orderCol.releaseVersion)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('fingerprint')">
a.fingerprint
<if test='orderCol.fingerprint != null and "DESC".equalsIgnoreCase(orderCol.fingerprint)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('threadNo')">
......@@ -574,14 +858,24 @@
<if test='orderCol.threadNo != null and "DESC".equalsIgnoreCase(orderCol.threadNo)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('error')">
a.error
<if test='orderCol.error != null and "DESC".equalsIgnoreCase(orderCol.error)'>DESC</if>
<if test="orderCol.containsKey('checkNum')">
a.checkNum
<if test='orderCol.checkNum != null and "DESC".equalsIgnoreCase(orderCol.checkNum)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('errorStack')">
a.errorStack
<if test='orderCol.errorStack != null and "DESC".equalsIgnoreCase(orderCol.errorStack)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('context')">
a.context
<if test='orderCol.context != null and "DESC".equalsIgnoreCase(orderCol.context)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('response')">
a.response
<if test='orderCol.response != null and "DESC".equalsIgnoreCase(orderCol.response)'>DESC</if>
<if test="orderCol.containsKey('extra')">
a.extra
<if test='orderCol.extra != null and "DESC".equalsIgnoreCase(orderCol.extra)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('logTime')">
......
......@@ -19,10 +19,9 @@ Authorization: {{authToken}}
Content-Type: application/json
{
"traceID":"arvhdl",
"serverType":"nqq0bh",
"appName":"8i6fqg",
"logTime":"1660665600000",
"traceID":"p90qpk",
"appName":"dp7dhc",
"message":"073hnq",
"page":1,
"size":10
}
......@@ -34,15 +33,23 @@ Authorization: {{authToken}}
Content-Type: application/json
{
"traceID":"8ryjdp",
"serverType":"mdgdb8",
"appName":"6fobjf",
"hostName":"mpwzb3",
"logLevel":"of3igm",
"threadNo":"eqdsam",
"error":"asd235",
"response":"2djxe2",
"logTime":"1660665600000",
"traceID":"mbto1z",
"appName":"6lcsoy",
"hostName":"ul06eq",
"message":"8kau4i",
"platform":"java",
"culprit":"8r6wce",
"tags":"sw7jp2",
"level":"INFO",
"environment":"ayr3ua",
"releaseVersion":"chxwkw",
"fingerprint":"2txnit",
"threadNo":"2z9vq4",
"checkNum":1,
"errorStack":"z3yxnh",
"context":"az7aus",
"extra":"9c0pnj",
"logTime":"1661270400000"
}
> {%
......
{
"local": {
"baseUrl": "http://127.0.0.1:18222/m",
"baseLogin": "http://127.0.0.1:18222/m"
"baseUrl": "http://127.0.0.1:18225/logservice",
"baseLogin": "http://127.0.0.1:18222/logservice"
},
"dev": {
"baseUrl": "http://192.168.0.217:18222/m",
"baseLogin": "http://192.168.0.98:11078/base"
"baseUrl": "http://192.168.0.217:18222/logservice",
"baseLogin": "http://192.168.0.98:11078/logservice"
},
"test": {
"baseUrl": "http://192.168.0.98:11091/m",
"baseLogin": "http://192.168.0.98:11078/base"
"baseUrl": "http://192.168.0.98:11078/logservice",
"baseLogin": "http://192.168.0.98:11078/zwfw"
},
"portal": {
"baseUrl": "http://192.168.0.98:11072/zwfw",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment