😎1、日志结果默认不裁剪 2、优化日志存储 3、优化生成获取所有列方法 4、其他优化
This commit is contained in:
parent
320e23a054
commit
3d1f77dc94
@ -34,12 +34,12 @@
|
|||||||
"DefaultIndex": "adminnet" // 索引
|
"DefaultIndex": "adminnet" // 索引
|
||||||
},
|
},
|
||||||
"Monitor": {
|
"Monitor": {
|
||||||
"GlobalEnabled": true, // 启用全局拦截日志
|
"GlobalEnabled": true, // 启用全局拦截日志(建议生产环境关闭,否则对性能有影响)
|
||||||
"IncludeOfMethods": [], // 拦截特定方法,当GlobalEnabled=false有效
|
"IncludeOfMethods": [], // 拦截特定方法,当GlobalEnabled=false有效
|
||||||
"ExcludeOfMethods": [], // 排除特定方法,当GlobalEnabled=true有效
|
"ExcludeOfMethods": [], // 排除特定方法,当GlobalEnabled=true有效
|
||||||
"BahLogLevel": "Information", // Oops.Oh 和 Oops.Bah 业务日志输出级别
|
"BahLogLevel": "Information", // Oops.Oh 和 Oops.Bah 业务日志输出级别
|
||||||
"WithReturnValue": true, // 是否包含返回值,默认true
|
"WithReturnValue": true, // 是否包含返回值,默认true
|
||||||
"ReturnValueThreshold": 500, // 返回值字符串阈值,默认0全量输出
|
"ReturnValueThreshold": 0, // 返回值字符串阈值,默认0全量输出
|
||||||
"JsonBehavior": "None", // 是否输出Json,默认None(OnlyJson、All)
|
"JsonBehavior": "None", // 是否输出Json,默认None(OnlyJson、All)
|
||||||
"JsonIndented": false, // 是否格式化Json
|
"JsonIndented": false, // 是否格式化Json
|
||||||
"UseUtcTimestamp": false, // 时间格式UTC、LOCAL
|
"UseUtcTimestamp": false, // 时间格式UTC、LOCAL
|
||||||
|
|||||||
@ -49,7 +49,7 @@
|
|||||||
<PackageReference Include="SSH.NET" Version="2024.2.0" />
|
<PackageReference Include="SSH.NET" Version="2024.2.0" />
|
||||||
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.5.1" />
|
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.5.1" />
|
||||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||||
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1160" />
|
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1161" />
|
||||||
<PackageReference Include="UAParser" Version="3.1.47" />
|
<PackageReference Include="UAParser" Version="3.1.47" />
|
||||||
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@ -76,11 +76,6 @@ public class ConfigConst
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const string SysTenantHostLogin = "sys_tenant_host_login";
|
public const string SysTenantHostLogin = "sys_tenant_host_login";
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 数据校验日志
|
|
||||||
/// </summary>
|
|
||||||
public const string SysValidationLog = "sys_validation_log";
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 行政区划同步层级 1-省级,2-市级,3-区县级,4-街道级,5-村级
|
/// 行政区划同步层级 1-省级,2-市级,3-区县级,4-街道级,5-村级
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -54,7 +54,10 @@ public class AppEventSubscriber : IEventSubscriber, ISingleton, IDisposable
|
|||||||
//var mailTemp = File.ReadAllText(mailTempPath);
|
//var mailTemp = File.ReadAllText(mailTempPath);
|
||||||
//var mail = await _serviceScope.ServiceProvider.GetRequiredService<IViewEngine>().RunCompileFromCachedAsync(mailTemp, );
|
//var mail = await _serviceScope.ServiceProvider.GetRequiredService<IViewEngine>().RunCompileFromCachedAsync(mailTemp, );
|
||||||
|
|
||||||
var webTitle = await _serviceScope.ServiceProvider.GetRequiredService<SysConfigService>().GetConfigValueByCode<string>(ConfigConst.SysWebTitle);
|
var _sysConfigService = _serviceScope.ServiceProvider.GetRequiredService<SysConfigService>();
|
||||||
|
if (!await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysErrorMail)) return;
|
||||||
|
|
||||||
|
var webTitle = await _sysConfigService.GetConfigValueByCode<string>(ConfigConst.SysWebTitle);
|
||||||
var title = $"{webTitle} 系统异常";
|
var title = $"{webTitle} 系统异常";
|
||||||
await _serviceScope.ServiceProvider.GetRequiredService<SysEmailService>().SendEmail(JSON.Serialize(context.GetPayload<string>()), title);
|
await _serviceScope.ServiceProvider.GetRequiredService<SysEmailService>().SendEmail(JSON.Serialize(context.GetPayload<string>()), title);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,9 +80,6 @@ public class DatabaseLoggingWriter : IDatabaseLoggingWriter, IDisposable
|
|||||||
}
|
}
|
||||||
|
|
||||||
var loggingMonitor = JSON.Deserialize<dynamic>(jsonStr);
|
var loggingMonitor = JSON.Deserialize<dynamic>(jsonStr);
|
||||||
// 记录数据校验日志
|
|
||||||
if (loggingMonitor.validation != null && !await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysValidationLog)) return;
|
|
||||||
|
|
||||||
// 获取当前操作者
|
// 获取当前操作者
|
||||||
string account = "", realName = "", userId = "", tenantId = "";
|
string account = "", realName = "", userId = "", tenantId = "";
|
||||||
if (loggingMonitor.authorizationClaims != null)
|
if (loggingMonitor.authorizationClaims != null)
|
||||||
@ -98,11 +95,12 @@ public class DatabaseLoggingWriter : IDatabaseLoggingWriter, IDisposable
|
|||||||
var remoteIPv4 = ((JArray)loggingMonitor.requestHeaders).OfType<JObject>()
|
var remoteIPv4 = ((JArray)loggingMonitor.requestHeaders).OfType<JObject>()
|
||||||
.FirstOrDefault(header => (string)header["key"] == "X-Forwarded-For")?["value"]?.ToString();
|
.FirstOrDefault(header => (string)header["key"] == "X-Forwarded-For")?["value"]?.ToString();
|
||||||
|
|
||||||
|
// 获取IP地理位置
|
||||||
if (string.IsNullOrEmpty(remoteIPv4))
|
if (string.IsNullOrEmpty(remoteIPv4))
|
||||||
remoteIPv4 = loggingMonitor.remoteIPv4;
|
remoteIPv4 = loggingMonitor.remoteIPv4;
|
||||||
|
|
||||||
(string ipLocation, double? longitude, double? latitude) = CommonUtil.GetIpAddress(remoteIPv4);
|
(string ipLocation, double? longitude, double? latitude) = CommonUtil.GetIpAddress(remoteIPv4);
|
||||||
|
|
||||||
|
// 获取设备信息
|
||||||
var browser = "";
|
var browser = "";
|
||||||
var os = "";
|
var os = "";
|
||||||
if (loggingMonitor.userAgent != null)
|
if (loggingMonitor.userAgent != null)
|
||||||
@ -149,10 +147,7 @@ public class DatabaseLoggingWriter : IDatabaseLoggingWriter, IDisposable
|
|||||||
}).ExecuteCommandAsync();
|
}).ExecuteCommandAsync();
|
||||||
|
|
||||||
// 将异常日志发送到邮件
|
// 将异常日志发送到邮件
|
||||||
if (await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysErrorMail))
|
|
||||||
{
|
|
||||||
await _eventPublisher.PublishAsync(CommonConst.SendErrorMail, logMsg.Exception ?? loggingMonitor.exception);
|
await _eventPublisher.PublishAsync(CommonConst.SendErrorMail, logMsg.Exception ?? loggingMonitor.exception);
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,7 +32,6 @@ public class SysConfigSeedData : ISqlSugarEntitySeedData<SysConfig>
|
|||||||
new SysConfig{ Id=1300000000201, Name="发送异常日志邮件", Code=ConfigConst.SysErrorMail, Value="False", SysFlag=YesNoEnum.Y, Remark="是否发送异常日志邮件", OrderNo=110, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
new SysConfig{ Id=1300000000201, Name="发送异常日志邮件", Code=ConfigConst.SysErrorMail, Value="False", SysFlag=YesNoEnum.Y, Remark="是否发送异常日志邮件", OrderNo=110, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||||
new SysConfig{ Id=1300000000211, Name="域登录验证", Code=ConfigConst.SysDomainLogin, Value="False", SysFlag=YesNoEnum.Y, Remark="是否开启域登录验证", OrderNo=120, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
new SysConfig{ Id=1300000000211, Name="域登录验证", Code=ConfigConst.SysDomainLogin, Value="False", SysFlag=YesNoEnum.Y, Remark="是否开启域登录验证", OrderNo=120, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||||
new SysConfig{ Id=1300000000221, Name="租户隔离登录验证", Code=ConfigConst.SysTenantHostLogin, Value="False", SysFlag=YesNoEnum.Y, Remark="租户隔离登录验证", OrderNo=130, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
new SysConfig{ Id=1300000000221, Name="租户隔离登录验证", Code=ConfigConst.SysTenantHostLogin, Value="False", SysFlag=YesNoEnum.Y, Remark="租户隔离登录验证", OrderNo=130, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||||
new SysConfig{ Id=1300000000231, Name="数据校验日志", Code=ConfigConst.SysValidationLog, Value="True", SysFlag=YesNoEnum.Y, Remark="是否数据校验日志", OrderNo=140, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
|
||||||
new SysConfig{ Id=1300000000241, Name="行政区划同步层级", Code=ConfigConst.SysRegionSyncLevel, Value="3", SysFlag=YesNoEnum.Y, Remark="行政区划同步层级 1-省级,2-市级,3-区县级,4-街道级,5-村级", OrderNo=150, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
new SysConfig{ Id=1300000000241, Name="行政区划同步层级", Code=ConfigConst.SysRegionSyncLevel, Value="3", SysFlag=YesNoEnum.Y, Remark="行政区划同步层级 1-省级,2-市级,3-区县级,4-街道级,5-村级", OrderNo=150, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||||
// 新业务系统记得更改密匙,通过接口(http://localhost:5005/api/sysCommon/smKeyPair)获取
|
// 新业务系统记得更改密匙,通过接口(http://localhost:5005/api/sysCommon/smKeyPair)获取
|
||||||
new SysConfig{ Id=1300000000251, Name="国密SM2密匙", Code=ConfigConst.SysSM2Key, Value="04851D329AA3E38C2E7670AFE70E6E70E92F8769CA27C8766B12209A0FFBA4493B603EF7A0B9B1E16F0E8930C0406EA0B179B68DF28E25334BDEC4AE76D907E9E9;3A61D1D30C6302DABFF36201D936D0143EEF0C850AF28C5CA6D5C045AF8C5C8A", SysFlag=YesNoEnum.Y, Remark="国密SM2密匙", OrderNo=160, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-11-21 00:00:00") },
|
new SysConfig{ Id=1300000000251, Name="国密SM2密匙", Code=ConfigConst.SysSM2Key, Value="04851D329AA3E38C2E7670AFE70E6E70E92F8769CA27C8766B12209A0FFBA4493B603EF7A0B9B1E16F0E8930C0406EA0B179B68DF28E25334BDEC4AE76D907E9E9;3A61D1D30C6302DABFF36201D936D0143EEF0C850AF28C5CA6D5C045AF8C5C8A", SysFlag=YesNoEnum.Y, Remark="国密SM2密匙", OrderNo=160, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-11-21 00:00:00") },
|
||||||
|
|||||||
@ -222,32 +222,49 @@ public class SysCodeGenService : IDynamicApiController, ITransient
|
|||||||
var entityType = provider.DbMaintenance.GetTableInfoList(false).FirstOrDefault(u => u.Name == tableName);
|
var entityType = provider.DbMaintenance.GetTableInfoList(false).FirstOrDefault(u => u.Name == tableName);
|
||||||
if (entityType == null) return null;
|
if (entityType == null) return null;
|
||||||
var entityBasePropertyNames = _codeGenOptions.EntityBaseColumn[nameof(EntityTenant)];
|
var entityBasePropertyNames = _codeGenOptions.EntityBaseColumn[nameof(EntityTenant)];
|
||||||
var properties = GetEntityInfos().Result.First(u => u.DbTableName.ToLower() == tableName.ToLower()).Type.GetProperties()
|
|
||||||
.Where(e => e.GetCustomAttribute<SugarColumn>()?.IsIgnore == false).Select(u => new
|
tableName = GetRealTableName(tableName);
|
||||||
|
var properties = GetEntityInfos().Result.First(u => GetRealTableName(u.DbTableName).EqualIgnoreCase(tableName)).Type.GetProperties()
|
||||||
|
.Where(u => u.GetCustomAttribute<SugarColumn>()?.IsIgnore == false).Select(u => new
|
||||||
{
|
{
|
||||||
PropertyName = u.Name,
|
PropertyName = u.Name,
|
||||||
ColumnComment = u.GetCustomAttribute<SugarColumn>()?.ColumnDescription,
|
ColumnComment = u.GetCustomAttribute<SugarColumn>()?.ColumnDescription,
|
||||||
ColumnName = u.GetCustomAttribute<SugarColumn>()?.ColumnName ?? u.Name
|
ColumnName = GetRealColumnName(u.GetCustomAttribute<SugarColumn>()?.ColumnName) ?? u.Name
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
// 按原始类型的顺序获取所有实体类型属性(不包含导航属性,会返回null)
|
// 按原始类型的顺序获取所有实体类型属性(不包含导航属性,会返回null)
|
||||||
var columnList = provider.DbMaintenance.GetColumnInfosByTableName(entityType.Name).Select(u => new ColumnOuput
|
var columnList = provider.DbMaintenance.GetColumnInfosByTableName(entityType.Name).Select(u => new ColumnOuput
|
||||||
{
|
{
|
||||||
ColumnName = config.DbSettings.EnableUnderLine ? CodeGenUtil.CamelColumnName(u.DbColumnName, entityBasePropertyNames) : u.DbColumnName,
|
ColumnName = config!.DbSettings.EnableUnderLine ? CodeGenUtil.CamelColumnName(u.DbColumnName, entityBasePropertyNames) : u.DbColumnName,
|
||||||
ColumnKey = u.IsPrimarykey.ToString(),
|
ColumnKey = u.IsPrimarykey.ToString(),
|
||||||
DataType = u.DataType.ToString(),
|
DataType = u.DataType.ToString(),
|
||||||
NetType = CodeGenUtil.ConvertDataType(u, provider.CurrentConnectionConfig.DbType),
|
NetType = CodeGenUtil.ConvertDataType(u, provider.CurrentConnectionConfig.DbType),
|
||||||
ColumnComment = u.ColumnDescription
|
ColumnComment = u.ColumnDescription
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
foreach (var column in columnList)
|
foreach (var column in columnList)
|
||||||
{
|
{
|
||||||
if (!properties.Any(u => u.ColumnName == column.ColumnName))
|
|
||||||
continue;
|
|
||||||
var property = properties.First(u => u.ColumnName == column.ColumnName);
|
var property = properties.First(u => u.ColumnName == column.ColumnName);
|
||||||
column.ColumnComment ??= property?.ColumnComment;
|
column.ColumnComment ??= property?.ColumnComment;
|
||||||
column.PropertyName = property?.PropertyName;
|
column.PropertyName = property?.PropertyName;
|
||||||
}
|
}
|
||||||
return columnList;
|
return columnList;
|
||||||
|
|
||||||
|
string GetRealTableName(string name)
|
||||||
|
{
|
||||||
|
string realName = config!.DbSettings.EnableUnderLine ? UtilMethods.ToUnderLine(name) : name;
|
||||||
|
return realName;
|
||||||
|
}
|
||||||
|
|
||||||
|
string GetRealColumnName(string name)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(name))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
string realName = config!.DbSettings.EnableUnderLine ? CodeGenUtil.CamelColumnName(name, entityBasePropertyNames) : name;
|
||||||
|
return realName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -131,7 +131,7 @@ public class DateTimeUtil
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取日期天的最大时间
|
/// 判断日期是否在当前年份并格式化日期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="dt"></param>
|
/// <param name="dt"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
@ -141,7 +141,7 @@ public class DateTimeUtil
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取今天日期范围00:00:00 - 23:59:59
|
/// 获取日期范围00:00:00 - 23:59:59
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static List<DateTime> GetTodayTimeList(DateTime time)
|
public static List<DateTime> GetTodayTimeList(DateTime time)
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "admin.net.pro",
|
"name": "admin.net.pro",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "2.4.33",
|
"version": "2.4.33",
|
||||||
"lastBuildTime": "2025.01.10",
|
"lastBuildTime": "2025.01.11",
|
||||||
"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
|
"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
|
||||||
"author": "zuohuaijun",
|
"author": "zuohuaijun",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -36,7 +36,7 @@
|
|||||||
"echarts": "^5.6.0",
|
"echarts": "^5.6.0",
|
||||||
"echarts-gl": "^2.0.9",
|
"echarts-gl": "^2.0.9",
|
||||||
"echarts-wordcloud": "^2.1.0",
|
"echarts-wordcloud": "^2.1.0",
|
||||||
"element-plus": "^2.9.2",
|
"element-plus": "^2.9.3",
|
||||||
"exceljs": "^4.4.0",
|
"exceljs": "^4.4.0",
|
||||||
"ezuikit-js": "^8.1.4",
|
"ezuikit-js": "^8.1.4",
|
||||||
"gcoord": "^1.0.6",
|
"gcoord": "^1.0.6",
|
||||||
@ -94,7 +94,7 @@
|
|||||||
"@vitejs/plugin-vue-jsx": "^4.1.1",
|
"@vitejs/plugin-vue-jsx": "^4.1.1",
|
||||||
"@vue/compiler-sfc": "^3.5.13",
|
"@vue/compiler-sfc": "^3.5.13",
|
||||||
"code-inspector-plugin": "^0.19.2",
|
"code-inspector-plugin": "^0.19.2",
|
||||||
"eslint": "^9.17.0",
|
"eslint": "^9.18.0",
|
||||||
"eslint-plugin-vue": "^9.32.0",
|
"eslint-plugin-vue": "^9.32.0",
|
||||||
"globals": "^15.14.0",
|
"globals": "^15.14.0",
|
||||||
"less": "^4.2.1",
|
"less": "^4.2.1",
|
||||||
|
|||||||
@ -178,7 +178,7 @@ onUnmounted(() => {
|
|||||||
|
|
||||||
// 检测大小写按键
|
// 检测大小写按键
|
||||||
const handleKeyPress = (e: KeyboardEvent) => {
|
const handleKeyPress = (e: KeyboardEvent) => {
|
||||||
state.capsLockVisible = e.getModifierState('CapsLock');
|
state.capsLockVisible = e.key === 'CapsLock';
|
||||||
};
|
};
|
||||||
|
|
||||||
// 获取验证码
|
// 获取验证码
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user