【问题标题】:NLog rename old file changing the original file nameNLog重命名旧文件更改原始文件名
【发布时间】:2021-02-04 07:56:01
【问题描述】:

我正在局域网环境中的 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 并仅添加数据?

谢谢。

【问题讨论】:

  • 嗨卢克,“旧文件名”和“原始日志文件”是什么?尝试更好地解释您的问题,也许可以举个例子来帮助社区帮助您

标签: c# asp.net .net logging nlog


【解决方案1】:

NLog 配置变量对整个应用程序都是全局的。对每个请求都修改它们不是一个好主意,除非您承诺一次只有一个请求。

请考虑将NLog.Web-nuget-package 添加到您的项目中并更改您的文件目标以使用此文件名布局:

    <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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    相关资源
    最近更新 更多