优化了打印 日志的功能
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
<target name="logfile"
|
<target name="logfile"
|
||||||
xsi:type="File"
|
xsi:type="File"
|
||||||
fileName="logs/${shortdate}.log"
|
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"
|
archiveFileName="logs/archives/{#}.log"
|
||||||
archiveEvery="Day"
|
archiveEvery="Day"
|
||||||
archiveNumbering="Rolling"
|
archiveNumbering="Rolling"
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
<!-- 控制台日志 -->
|
<!-- 控制台日志 -->
|
||||||
<target name="logconsole"
|
<target name="logconsole"
|
||||||
xsi:type="Console"
|
xsi:type="Console"
|
||||||
layout="${date:format=HH\:mm\:ss} ${level} ${message}"/>
|
layout="${date:format=HH\:mm\:ss} ${level} ${message}${exception:format=tostring}"/>
|
||||||
<!-- SQL Server 目标 -->
|
<!-- SQL Server 目标 -->
|
||||||
<!-- 异步写入日志到数据库 -->
|
<!-- 异步写入日志到数据库 -->
|
||||||
|
|
||||||
@@ -30,10 +30,10 @@
|
|||||||
<commandText>
|
<commandText>
|
||||||
INSERT INTO nlog (
|
INSERT INTO nlog (
|
||||||
LogTime, Level, ThreadID,ThreadName,Callsite,CallsiteLineNumber,Message,
|
LogTime, Level, ThreadID,ThreadName,Callsite,CallsiteLineNumber,Message,
|
||||||
Logger, Exception
|
Logger, Exception, CallerFilePath, CallerLineNumber,CallerMember
|
||||||
) VALUES (
|
) VALUES (
|
||||||
@LogTime, @Level,@ThreadID,@ThreadName,@Callsite,@CallsiteLineNumber,@Message,
|
@LogTime, @Level,@ThreadID,@ThreadName,@Callsite,@CallsiteLineNumber,@Message,
|
||||||
@Logger, @Exception
|
@Logger, @Exception, @CallerFilePath, @CallerLineNumber,@CallerMember
|
||||||
)
|
)
|
||||||
</commandText>
|
</commandText>
|
||||||
|
|
||||||
@@ -44,9 +44,12 @@
|
|||||||
<parameter name="@ThreadName" layout="${threadname}"/>
|
<parameter name="@ThreadName" layout="${threadname}"/>
|
||||||
<parameter name="@Message" layout="${message}"/>
|
<parameter name="@Message" layout="${message}"/>
|
||||||
<parameter name="@Callsite" layout="${callsite}"/>
|
<parameter name="@Callsite" layout="${callsite}"/>
|
||||||
<parameter name="@CallsiteLineNumber" layout="${callsite-linenumber}"/>
|
|
||||||
<parameter name="@Logger" layout="${logger}"/>
|
<parameter name="@Logger" layout="${logger}"/>
|
||||||
<parameter name="@Exception" layout="${exception:format=ToString}"/>
|
<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>
|
</target>
|
||||||
</targets>
|
</targets>
|
||||||
|
|||||||
@@ -60,4 +60,20 @@ public class DbNlog
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(IsNullable = true)]
|
[SugarColumn(IsNullable = true)]
|
||||||
public string ThreadName { get; set; }
|
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" Version="3.14.0" />
|
||||||
<PackageReference Include="NUnit.Analyzers" Version="3.9.0" />
|
<PackageReference Include="NUnit.Analyzers" Version="3.9.0" />
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.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="SqlSugarCore.MySql" Version="5.1.4.178" />
|
||||||
|
<PackageReference Include="NLog" Version="6.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -27,4 +28,10 @@
|
|||||||
<ProjectReference Include="..\PMSWPF.csproj" />
|
<ProjectReference Include="..\PMSWPF.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="..\Config\nlog.config">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
Reference in New Issue
Block a user