在使用System.Diagnostics.Trace的地方有很多代码。我想使用ILogger,nlog将所有消息保存到文件中。我该怎么办?
答案 0 :(得分:1)
不能。但是,如果您采用其他方法,即将Trace提供程序添加到Microsoft.Extensions.Logging,然后使用ILogger
进行记录。邮件将发送到跟踪,以及您已设置的任何其他日志记录。
如果您试图捕获由框架完成的日志记录,则.NET Core已使用Microsoft.Extensions.Logging。您只需要适当地更改日志级别即可,除了默认的Info或更高级别之外,它还可以捕获Debug和Trace级别。另外,如果您仅对从某些组件进行日志记录感兴趣,则可以按名称空间指定日志级别和提供程序。 docs在那里具有您需要的所有信息。
答案 1 :(得分:1)
您可以实现自己的TraceListener,其外观类似于此
// https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracelistener?view=netframework-4.7.2
public class LoggerTraceListener : TraceListener
{
private readonly ILogger _logger;
public LoggerTraceListener(ILogger logger) {
_logger = logger;
}
public override void Write(string message)
{
_logger.LogInformation(message);
}
public override void WriteLine(string message)
{
_logger.LogInformation(message);
}
}
然后,在启动中,您可以注册该监听器
public class Startup
{
// Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app)
{
var logger = app.ApplicationServices.GetService<ILogger<Startup>>();
//https://docs.microsoft.com/en-us/dotnet/framework/debug-trace-profile/how-to-create-and-initialize-trace-listeners#to-create-and-use-a-trace-listener-in-code
Trace.Listeners.Add(new LoggerTraceListener(logger));
}
}
这将输出到ILogger,您可以将记录器工厂配置为输出到文件。