【问题标题】:NLog console doesn't work on dotnet publishNLog 控制台在 dotnet publish 上不起作用
【发布时间】:2018-08-02 03:38:04
【问题描述】:

所以我试图在 dotnet core(比如说 2.1.202)上运行 NLog,所以我特别希望它能够与控制台输出流一起使用。而且我想获得尽可能多的消息(是的,记录..)所以我实现了一个简单的Tracer : TraceListener。到目前为止一切顺利,即使我尝试通过dotnet run 运行它,它仍然运行良好(一切都在控制台打印,因为它应该是)。 然而,如果我尝试通过

运行网络应用程序
  • 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,它确实有效(来自发布),但我仍然无法在我的应用程序中找到我的问题。

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

【问题讨论】:

标签: c# .net-core nlog


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-10-02
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多