因此,我试图在dotnet核心(比如2.1.202)上运行NLog,所以我特别希望它与控制台输出流一起使用。而且我想获得尽可能多的消息(是的,记录日志..),所以我实现了一个简单的Tracer : TraceListener
。到目前为止,一切都很好,即使我尝试通过dotnet run
运行它,它也仍然可以很好地工作(一切都应该在控制台上打印出来)。 但是,如果我尝试通过以下方式运行Web应用程序
dotnet publish
dotnet MyProjectName.dll
失败。实际没有日志消息显示,并且项目运行顺利。所以没有人知道一种通过“发布”方法在控制台上打印日志消息的方法。
这是我的Program.cs
文件(这是我唯一提到Nlog的地方,Startup.cs中没有特定的服务/配置)
public class Program
{
public static void Main(string[] args)
{
var host = BuildWebHost(args);
var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
Trace.Listeners.Add(new Tracer(logger));
try
{
Trace.WriteLine("init main");
host.Run();
}
catch (Exception ex)
{
Trace.Fail(ex.ToString());
}
finally
{
NLog.LogManager.Shutdown();
}
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(LogLevel.Trace);
})
.UseNLog()
.Build();
}
为了公平起见,我已经从NLog中检查了given example,并且它确实可以正常工作(从发布),但是仍然无法在我的应用程序中找到问题。
因此,如果有人做了类似的事情,并且知道我在这里想通过发布运行日志的功能,那将非常有帮助。干杯!
答案 0 :(得分:1)
所以问题是内部存在第二个nlog.config(在类库项目中),该nlog.config从Web项目中覆盖了我的默认nlog.config。
向Julian表示感谢,提出了检查内部nlog日志的想法-确实非常有帮助。