NLog控制台不适用于dotnet发布

时间:2018-07-19 20:32:02

标签: c# .net-core nlog

因此,我试图在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,并且它确实可以正常工作(从发布),但是仍然无法在我的应用程序中找到问题。

因此,如果有人做了类似的事情,并且知道我在这里想通过发布运行日志的功能,那将非常有帮助。干杯!

1 个答案:

答案 0 :(得分:1)

所以问题是内部存在第二个nlog.config(在类库项目中),该nlog.config从Web项目中覆盖了我的默认nlog.config。

Julian表示感谢,提出了检查内部nlog日志的想法-确实非常有帮助。