针对自定义操作日志根据内容解析出控制器名称和函数名称
反正在操作日志列表中,只显示一个自定义操作日志,都看不到具体的函数名称。
This commit is contained in:
parent
73626e6884
commit
2f039f2865
@ -29,15 +29,46 @@ public class DatabaseLoggingWriter : IDatabaseLoggingWriter, IDisposable
|
||||
: SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据操作日志内容解析出控制器名称和函数名称
|
||||
/// </summary>
|
||||
/// <param name="logText"></param>
|
||||
/// <returns></returns>
|
||||
private static (string actionName, string controllerName) ExtractActionAndController(string logText)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 获取第二行
|
||||
var targetLine = logText.Split('\n')[1];
|
||||
// 按点号分割字符串
|
||||
var parts = targetLine.Split('.');
|
||||
// 获取最后两个部分
|
||||
if (parts.Length >= 2)
|
||||
{
|
||||
var actionName = parts[^1].Split('(')[0].Trim(); // 去除方法参数部分
|
||||
var controllerName = parts[^2].Trim(); // 获取Controller名称
|
||||
return (actionName, controllerName);
|
||||
}
|
||||
return (string.Empty, string.Empty);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return (string.Empty, string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task WriteAsync(LogMessage logMsg, bool flush)
|
||||
{
|
||||
var jsonStr = logMsg.Context?.Get("loggingMonitor")?.ToString();
|
||||
if (string.IsNullOrWhiteSpace(jsonStr))
|
||||
{
|
||||
var (actionName, controllerName) = ExtractActionAndController(logMsg.Message);
|
||||
await _db.Insertable(new SysLogOp
|
||||
{
|
||||
DisplayTitle = "自定义操作日志",
|
||||
LogDateTime = logMsg.LogDateTime,
|
||||
LogDateTime = logMsg.LogDateTime,
|
||||
ActionName = actionName,
|
||||
ControllerName = controllerName,
|
||||
EventId = logMsg.EventId.Id,
|
||||
ThreadId = logMsg.ThreadId,
|
||||
TraceId = logMsg.TraceId,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user