优化sql日志写入文件

This commit is contained in:
不做码农 2023-04-14 08:46:59 +08:00
parent 8a49e474e9
commit 82820961ef
2 changed files with 45 additions and 15 deletions

View File

@ -40,7 +40,6 @@ namespace ZR.Admin.WebApi.Extensions
DbType = (IocDbType)dbType, DbType = (IocDbType)dbType,
IsAutoCloseConnection = true IsAutoCloseConnection = true
} }
//...增加其他数据库
}; };
SugarIocServices.AddSqlSugar(iocList); SugarIocServices.AddSqlSugar(iocList);
ICacheService cache = new SqlSugarCache(); ICacheService cache = new SqlSugarCache();
@ -61,21 +60,31 @@ namespace ZR.Admin.WebApi.Extensions
var config = db.GetConnection(iocConfig.ConfigId).CurrentConnectionConfig; var config = db.GetConnection(iocConfig.ConfigId).CurrentConnectionConfig;
string configId = config.ConfigId; string configId = config.ConfigId;
db.GetConnectionScope(configId).Aop.OnLogExecuting = (sql, pars) => db.GetConnectionScope(configId).Aop.OnLogExecuted = (sql, pars) =>
{ {
string log = $"【db{configId} SQL语句】{UtilMethods.GetSqlString(config.DbType, sql, pars)}\n"; string log = $"【db{configId} SQL语句】{UtilMethods.GetSqlString(config.DbType, sql, pars)}\n";
if (sql.StartsWith("UPDATE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("INSERT", StringComparison.OrdinalIgnoreCase)) if (sql.TrimStart().StartsWith("SELECT", StringComparison.OrdinalIgnoreCase))
logger.Warn(log); {
else if (sql.StartsWith("DELETE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("TRUNCATE", StringComparison.OrdinalIgnoreCase))
logger.Error(log);
else
logger.Info(log); logger.Info(log);
}
else if (sql.StartsWith("UPDATE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("INSERT", StringComparison.OrdinalIgnoreCase))
{
logger.Warn(log);
}
else if (sql.StartsWith("DELETE", StringComparison.OrdinalIgnoreCase) || sql.StartsWith("TRUNCATE", StringComparison.OrdinalIgnoreCase))
{
logger.Error(log);
}
else
{
log = $"【db{configId} SQL语句】dbo.{sql} {string.Join(", ", pars.Select(x => x.ParameterName + " = " + GetParsValue(x)))};\n";
logger.Info(log);
}
}; };
db.GetConnectionScope(configId).Aop.OnError = (e) => db.GetConnectionScope(configId).Aop.OnError = (e) =>
{ {
Console.ForegroundColor = ConsoleColor.Red; logger.Error(e, $"执行SQL出错{e.Message}{e.StackTrace}");
logger.Error(e, $"执行SQL出错{e.Message}");
}; };
db.GetConnectionScope(configId).CurrentConnectionConfig.MoreSettings = new ConnMoreSettings() db.GetConnectionScope(configId).CurrentConnectionConfig.MoreSettings = new ConnMoreSettings()
@ -103,6 +112,15 @@ namespace ZR.Admin.WebApi.Extensions
db.CodeFirst.SetStringDefaultLength(512).InitTables(entityes); db.CodeFirst.SetStringDefaultLength(512).InitTables(entityes);
} }
private static object GetParsValue(SugarParameter x)
{
if (x.DbType == System.Data.DbType.String || x.DbType == System.Data.DbType.DateTime || x.DbType == System.Data.DbType.String)
{
return "'" + x.Value + "'";
}
return x.Value;
}
/// <summary> /// <summary>
/// 数据过滤 /// 数据过滤
/// </summary> /// </summary>

View File

@ -24,7 +24,18 @@
<!--${basedir}表示当前应用程序域所在的根目录--> <!--${basedir}表示当前应用程序域所在的根目录-->
<target name="allfile" xsi:type="File" <target name="allfile" xsi:type="File"
fileName="${basedir}/adminlogs/all.txt" fileName="${basedir}/adminlogs/all.txt"
archiveFileName="${basedir}/adminlogs/all.{###}.txt" archiveFileName="${basedir}/adminlogs/bak/all.{###}.txt"
archiveEvery="Day"
archiveNumbering="DateAndSequence"
archiveAboveSize="20000000"
maxArchiveFiles="30"
keepFileOpen="true"
layout="${longdate} | ${event-properties:item=EventId_Id} | ${uppercase:${level}} | ${logger} | ${aspnet-request-iP:CheckForwardedForHeader=true} | ${event-properties:item=user} | ${aspnet-request-url} | ${message} | ${event-properties:item=requestParam} | ${event-properties:item=jsonResult} | ${onexception:${exception:format=tostring}"/>
<!--错误日志-->
<target name="errorfile" xsi:type="File"
fileName="${basedir}/adminlogs/error.txt"
archiveFileName="${basedir}/adminlogs/bak/error.{###}.txt"
archiveEvery="Day" archiveEvery="Day"
archiveNumbering="DateAndSequence" archiveNumbering="DateAndSequence"
archiveAboveSize="20000000" archiveAboveSize="20000000"
@ -34,14 +45,14 @@
<!--SQL文件--> <!--SQL文件-->
<target name="sqlfile" xsi:type="File" <target name="sqlfile" xsi:type="File"
fileName="${basedir}/adminlogs/all-sql.txt" fileName="${basedir}/adminlogs/admin-sql.txt"
archiveFileName="${basedir}/adminlogs/all.sql{###}.txt" archiveFileName="${basedir}/adminlogs/bak/admin-sql{###}.txt"
archiveEvery="Day" archiveEvery="Day"
archiveNumbering="DateAndSequence" archiveNumbering="DateAndSequence"
archiveAboveSize="20000000" archiveAboveSize="20000000"
maxArchiveFiles="30" maxArchiveFiles="30"
keepFileOpen="false" keepFileOpen="false"
layout="${longdate} ${aspnet-request-iP} ${aspnet-request-headers:HeaderNames=userid} ${aspnet-request-url} ${newline} ${message}"/> layout="${longdate} | ${uppercase:${level}} | ${aspnet-request-iP} | ${aspnet-request-headers:HeaderNames=userName} | ${aspnet-request-url} ${newline}${message}"/>
<!--写入彩色控制台--> <!--写入彩色控制台-->
<target name="consoleSql" xsi:type="ColoredConsole" useDefaultRowHighlightingRules="false" <target name="consoleSql" xsi:type="ColoredConsole" useDefaultRowHighlightingRules="false"
@ -69,6 +80,7 @@
<!--<logger name="System.*" writeTo="blackhole" final="true" />--> <!--<logger name="System.*" writeTo="blackhole" final="true" />-->
<!-- Quartz --> <!-- Quartz -->
<logger name="Quartz*" minlevel="Trace" maxlevel="Info" final="true" /> <logger name="Quartz*" minlevel="Trace" maxlevel="Info" final="true" />
<logger name="ZR.Admin.WebApi.Middleware.GlobalExceptionMiddleware" final="true" writeTo="console,errorfile"/>
<logger name="ZR.Admin.WebApi.Extensions.DbExtension" final="true" writeTo="consoleSql,sqlfile"/> <logger name="ZR.Admin.WebApi.Extensions.DbExtension" final="true" writeTo="consoleSql,sqlfile"/>
<logger name="*" final="true" writeTo="console"/> <logger name="*" final="true" writeTo="console"/>