【发布时间】:2021-12-12 09:31:44
【问题描述】:
我正在尝试将一个额外的日志文件添加到我现有的 NLog 实现中。 我已经有一个 Nlog 文件记录器,但我想为某些日志添加另一个。
我无法将这些日志分开,因为现有调用使用 LogManager.GetCurrentClassLogger(),而且它似乎只是附加到我想要分开的日志上。
新的日志文件只能由 Global.asax 文件中的日志填充,但将该规则集添加到 Web.config 中不起作用。有没有一种特殊的方法来为 Global.asax 文件定义规则?
Global.asax 文件
namespace TestOne.Browser
{
using System.Net;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using DataAnnotationsExtensions.ClientValidation;
using WebMatrix.WebData;
public class MvcApplication : HttpApplication
{
protected void Application_EndRequest()
{
...
var logger = LogManager.GetLogger("diagnosticsfile");
logger.Info("{0}, {1}, {2}, {3}", user, pageName, totalClientTimings, duration);
...
}
}
}
Web.config 文件
<nlog>
<variable name="root" value="C:/TestOne/Logs/Browser" />
<targets>
<target name="file" type="File" header="Starting logging..." footer="Stopping logging..." layout="${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${uppercase:${level}} ${callsite} ${aspnet-user-identity}${newline}${message} ${exception:format=ToString:maxInnerExceptionLevel=5}" fileName="${root}/Browser.log" archiveFileName="${root}/Archive/Browser.{##}.log" createDirs="true" archiveEvery="Day" archiveNumbering="Rolling" maxArchiveFiles="31" concurrentWrites="false" keepFileOpen="false" />
<target name="diagnosticsfile" type="File" header="Time, LogType, User, PageName, TotalClientTimings, Duration (ms)" layout="${longdate},${level:uppercase=true},${message}" fileName="${root}/DiagnosticsLog.log" archiveFileName="${root}/Archive/Diagnostics.{##}.log" createDirs="true" archiveEvery="Day" archiveNumbering="Rolling" maxArchiveFiles="31" concurrentWrites="false" keepFileOpen="false" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="file" />
<logger name="TestOne.Browser.MvcApplication" minlevel="Info" writeTo="diagnosticsfile" />
</rules>
</nlog>
使用此当前配置,不会将任何内容写入我的诊断文件(新日志文件)。
如果我在 Nlog 规则中将 TestOne.Browser.MvcApplication 替换为 *,则会写入该文件,但随后使用 LogManager.GetCurrentClassLogger() 的其他类中的现有日志有时会附加到诊断日志中(他们不应该这样做)。有没有办法配置它,这样就不会发生?
【问题讨论】:
标签: c# asp.net-mvc nlog