NLog 重命名旧文件更改原始文件名
NLog rename old file changing the original file name
我正在局域网环境中的 Asp.net 框架应用程序中使用 Nlog。
我有 10 个不同的客户使用该应用程序。我的目标是拥有不同的日志文件,每个客户端一个。我的 Nlog 配置是:
<target name="LogFile"
xsi:type="File"
fileName="D:\logs${var:idClient}.txt"
keepFileOpen="true"
archiveFileName="D:\logs\Old${var:idClient}_{#}.txt"
archiveDateFormat="yyyyMMdd"
archiveNumbering="Date"
archiveEvery="Day"
layout="${var:idClient}|${longdate}|${level:uppercase=true}|${callsite:fileName=false:includeSourcePath=false}|${message}"/>
</targets>
在Global.asax中:
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
string idClient= string.Empty;
if (context.Session == null || context.Session["ClientId"] == null ||
string.IsNullOrEmpty(context.Session["ClientId"].ToString()))
idClient= "Client ID Default";
else
idClient= System.Web.HttpContext.Current.Session["ClientId"]?.ToString();
NLog.LogManager.Configuration.Variables["idClient"] = idClient;
}
我的问题是旧文件名与原始日志文件的客户端 ID 不同。如何保持相同的客户端 ID 并仅添加数据?
谢谢。
NLog 配置变量是整个应用程序的全局变量。为每个请求修改它们不是一个好主意,除非你承诺一次只有一个请求。
而是考虑将 NLog.Web-nuget-package 添加到您的项目并更改您的文件目标以使用此 FileName-layout:
<extensions>
<add assembly="NLog.Web"/>
</extensions>
<targets>
<target name="LogFile" xsi:type="File"
fileName="D:\logs${aspnet-session:ClientId:whenEmpty=DefaultClientId}.txt" />
</targets>
另见 https://github.com/NLog/NLog/wiki/AspNetSession-layout-renderer
我正在局域网环境中的 Asp.net 框架应用程序中使用 Nlog。 我有 10 个不同的客户使用该应用程序。我的目标是拥有不同的日志文件,每个客户端一个。我的 Nlog 配置是:
<target name="LogFile"
xsi:type="File"
fileName="D:\logs${var:idClient}.txt"
keepFileOpen="true"
archiveFileName="D:\logs\Old${var:idClient}_{#}.txt"
archiveDateFormat="yyyyMMdd"
archiveNumbering="Date"
archiveEvery="Day"
layout="${var:idClient}|${longdate}|${level:uppercase=true}|${callsite:fileName=false:includeSourcePath=false}|${message}"/>
</targets>
在Global.asax中:
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
string idClient= string.Empty;
if (context.Session == null || context.Session["ClientId"] == null ||
string.IsNullOrEmpty(context.Session["ClientId"].ToString()))
idClient= "Client ID Default";
else
idClient= System.Web.HttpContext.Current.Session["ClientId"]?.ToString();
NLog.LogManager.Configuration.Variables["idClient"] = idClient;
}
我的问题是旧文件名与原始日志文件的客户端 ID 不同。如何保持相同的客户端 ID 并仅添加数据?
谢谢。
NLog 配置变量是整个应用程序的全局变量。为每个请求修改它们不是一个好主意,除非你承诺一次只有一个请求。
而是考虑将 NLog.Web-nuget-package 添加到您的项目并更改您的文件目标以使用此 FileName-layout:
<extensions>
<add assembly="NLog.Web"/>
</extensions>
<targets>
<target name="LogFile" xsi:type="File"
fileName="D:\logs${aspnet-session:ClientId:whenEmpty=DefaultClientId}.txt" />
</targets>
另见 https://github.com/NLog/NLog/wiki/AspNetSession-layout-renderer