优化了打印 日志的功能
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
<target name="logfile"
|
||||
xsi:type="File"
|
||||
fileName="logs/${shortdate}.log"
|
||||
layout="${longdate}|ThreadID=${threadid}|${level:uppercase=true}|${logger}|${message} ${exception:format=tostring}"
|
||||
layout="${longdate} ThreadID=${threadid} ${level:uppercase=true} ${logger} ${mdlc:CallerFilePath} ${mdlc:CallerLineNumber:whenEmpty=0} ${mdlc:CallerMember} ${message} ${exception:format=tostring}"
|
||||
archiveFileName="logs/archives/{#}.log"
|
||||
archiveEvery="Day"
|
||||
archiveNumbering="Rolling"
|
||||
@@ -19,7 +19,7 @@
|
||||
<!-- 控制台日志 -->
|
||||
<target name="logconsole"
|
||||
xsi:type="Console"
|
||||
layout="${date:format=HH\:mm\:ss} ${level} ${message}"/>
|
||||
layout="${date:format=HH\:mm\:ss} ${level} ${message}${exception:format=tostring}"/>
|
||||
<!-- SQL Server 目标 -->
|
||||
<!-- 异步写入日志到数据库 -->
|
||||
|
||||
@@ -30,10 +30,10 @@
|
||||
<commandText>
|
||||
INSERT INTO nlog (
|
||||
LogTime, Level, ThreadID,ThreadName,Callsite,CallsiteLineNumber,Message,
|
||||
Logger, Exception
|
||||
Logger, Exception, CallerFilePath, CallerLineNumber,CallerMember
|
||||
) VALUES (
|
||||
@LogTime, @Level,@ThreadID,@ThreadName,@Callsite,@CallsiteLineNumber,@Message,
|
||||
@Logger, @Exception
|
||||
@Logger, @Exception, @CallerFilePath, @CallerLineNumber,@CallerMember
|
||||
)
|
||||
</commandText>
|
||||
|
||||
@@ -44,9 +44,12 @@
|
||||
<parameter name="@ThreadName" layout="${threadname}"/>
|
||||
<parameter name="@Message" layout="${message}"/>
|
||||
<parameter name="@Callsite" layout="${callsite}"/>
|
||||
<parameter name="@CallsiteLineNumber" layout="${callsite-linenumber}"/>
|
||||
<parameter name="@Logger" layout="${logger}"/>
|
||||
<parameter name="@Exception" layout="${exception:format=ToString}"/>
|
||||
<parameter name="@CallsiteLineNumber" layout="${callsite-linenumber:whenEmpty=0}"/>
|
||||
<parameter name="@CallerFilePath" layout="${mdlc:CallerFilePath}"/>
|
||||
<parameter name="@CallerLineNumber" layout="${mdlc:CallerLineNumber:whenEmpty=0}"/>
|
||||
<parameter name="@CallerMember" layout="${mdlc:CallerMember}"/>
|
||||
|
||||
</target>
|
||||
</targets>
|
||||
|
||||
@@ -60,4 +60,20 @@ public class DbNlog
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public string ThreadName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 线程名称。
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public string CallerFilePath { get; set; }
|
||||
/// <summary>
|
||||
/// 线程名称。
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public int CallerLineNumber { get; set; }
|
||||
/// <summary>
|
||||
/// 线程名称。
|
||||
/// </summary>
|
||||
[SugarColumn(IsNullable = true)]
|
||||
public string CallerMember { get; set; }
|
||||
}
|
||||
82
Helper/NlogHelper.cs
Normal file
82
Helper/NlogHelper.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
using NLog;
|
||||
|
||||
namespace PMSWPF.Helper;
|
||||
|
||||
public static class NlogHelper
|
||||
{
|
||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||
|
||||
|
||||
public static void Error( string msg,Exception exception=null,[CallerFilePath] string callerFilePath = "",
|
||||
[CallerMemberName] string callerMember = "",
|
||||
[CallerLineNumber] int callerLineNumber = 0)
|
||||
{
|
||||
// 使用 using 语句确保 MappedDiagnosticsLogicalContext 在作用域结束时被清理
|
||||
// 这对于异步方法尤其重要,因为上下文会随着异步操作的流转而传递
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerFilePath", callerFilePath))
|
||||
{
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerLineNumber", callerLineNumber))
|
||||
{
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerMember", callerMember))
|
||||
{
|
||||
Logger.Error(exception,msg);
|
||||
} // 当 using 块结束时,"user-id" 和 "transaction-id" 会自动从上下文中移除
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void Info( string msg,[CallerFilePath] string callerFilePath = "",
|
||||
[CallerMemberName] string callerMember = "",
|
||||
[CallerLineNumber] int callerLineNumber = 0)
|
||||
{
|
||||
// 使用 using 语句确保 MappedDiagnosticsLogicalContext 在作用域结束时被清理
|
||||
// 这对于异步方法尤其重要,因为上下文会随着异步操作的流转而传递
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerFilePath", callerFilePath))
|
||||
{
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerLineNumber", callerLineNumber))
|
||||
{
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerMember", callerMember))
|
||||
{
|
||||
Logger.Info(msg);
|
||||
} // 当 using 块结束时,"user-id" 和 "transaction-id" 会自动从上下文中移除
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void Warn( string msg,[CallerFilePath] string callerFilePath = "",
|
||||
[CallerMemberName] string callerMember = "",
|
||||
[CallerLineNumber] int callerLineNumber = 0)
|
||||
{
|
||||
// 使用 using 语句确保 MappedDiagnosticsLogicalContext 在作用域结束时被清理
|
||||
// 这对于异步方法尤其重要,因为上下文会随着异步操作的流转而传递
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerFilePath", callerFilePath))
|
||||
{
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerLineNumber", callerLineNumber))
|
||||
{
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerMember", callerMember))
|
||||
{
|
||||
Logger.Warn(msg);
|
||||
} // 当 using 块结束时,"user-id" 和 "transaction-id" 会自动从上下文中移除
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void Trace( string msg,[CallerFilePath] string callerFilePath = "",
|
||||
[CallerMemberName] string callerMember = "",
|
||||
[CallerLineNumber] int callerLineNumber = 0)
|
||||
{
|
||||
// 使用 using 语句确保 MappedDiagnosticsLogicalContext 在作用域结束时被清理
|
||||
// 这对于异步方法尤其重要,因为上下文会随着异步操作的流转而传递
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerFilePath", callerFilePath))
|
||||
{
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerLineNumber", callerLineNumber))
|
||||
{
|
||||
using (MappedDiagnosticsLogicalContext.SetScoped("CallerMember", callerMember))
|
||||
{
|
||||
Logger.Trace(msg);
|
||||
} // 当 using 块结束时,"user-id" 和 "transaction-id" 会自动从上下文中移除
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,8 +15,9 @@
|
||||
<PackageReference Include="NUnit" Version="3.14.0" />
|
||||
<PackageReference Include="NUnit.Analyzers" Version="3.9.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
|
||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.145" />
|
||||
<PackageReference Include="SqlSugarCore" Version="5.1.4.197" />
|
||||
<PackageReference Include="SqlSugarCore.MySql" Version="5.1.4.178" />
|
||||
<PackageReference Include="NLog" Version="6.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@@ -27,4 +28,10 @@
|
||||
<ProjectReference Include="..\PMSWPF.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="..\Config\nlog.config">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
Reference in New Issue
Block a user