优化sql日志写入文件
This commit is contained in:
parent
8a49e474e9
commit
82820961ef
@ -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();
|
||||||
@ -59,23 +58,33 @@ namespace ZR.Admin.WebApi.Extensions
|
|||||||
private static void SetSugarAop(SqlSugarClient db, IocConfig iocConfig, ICacheService cache)
|
private static void SetSugarAop(SqlSugarClient db, IocConfig iocConfig, ICacheService cache)
|
||||||
{
|
{
|
||||||
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>
|
||||||
|
|||||||
@ -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,9 +80,10 @@
|
|||||||
<!--<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"/>
|
||||||
|
|
||||||
<logger name="*" minLevel="Trace" writeTo="allfile" />
|
<logger name="*" minLevel="Trace" writeTo="allfile" />
|
||||||
<!--Skip non-critical Microsoft logs and so log only own logs-->
|
<!--Skip non-critical Microsoft logs and so log only own logs-->
|
||||||
<logger name="Microsoft.*,Quartz.Core.QuartzSchedulerThread" maxlevel="Info" final="true" />
|
<logger name="Microsoft.*,Quartz.Core.QuartzSchedulerThread" maxlevel="Info" final="true" />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user