首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Serilog .NET核不输出日志

使用Serilog .NET核不输出日志
EN

Stack Overflow用户
提问于 2019-03-29 17:17:48
回答 1查看 8.6K关注 0票数 5

PS:我的问题在于我,而不是代码。密码没问题。我需要将.WriteTo.Console()更改为.WriteTo.Debug() (并获得正确的nuget包)。

我试图使用.NET核心Web中的Serilog从日志中输出信息。但是,没有输出相关信息(即我要记录的信息)。

我安装了以下Serilog nuget软件包:

  • 塞里罗格
  • Serilog.AspNetCore
  • Serilog.Sinks.Console
  • Serilog.Sinks.File
  • Serilog.Sinks.RollingFile

我已经考虑过在appSettings.json中设置我的配置设置,但如果可能的话,我更愿意这样做。

这是我的Program.cs文件。

代码语言:javascript
运行
复制
public class Program
{
    public static void Main(string[] args)
    {

        // Create the logger
        Log.Logger = new LoggerConfiguration()
            .Enrich.FromLogContext()
            .MinimumLevel.Debug()
            .WriteTo.Console()
            .CreateLogger();

        Log.Information("ah there you are");
        Log.Debug("super");
        Log.Error("super1");
        Log.Warning("super2");

        try
        {
            Log.Information("Starting web host");

            // Program.Main logic
            Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
            CreateWebHostBuilder(args).Build().Run();
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Host terminated unexpectedly");
            Console.WriteLine(ex.Message);
        }
        finally
        {
            // Close and flush the log.
            Log.CloseAndFlush();
        }   
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseSerilog(); // set serilog as the loggin provider
}

我在我的Startup.cs中设置了这个,以防与此相关。

代码语言:javascript
运行
复制
public class Startup
{
    private readonly ILogger _logger;

    public Startup(IConfiguration configuration, ILogger<Startup> logger)
    {
        Configuration = configuration;

        _logger = logger;
    }
}

下面是我运行应用程序时得到的输出。这没什么重要的(为了确认我没有遗漏任何东西,我已经找了好几遍了。)大多数情况下,我附上这张照片是为了确认我确实是在寻找正确的区域)。

有什么想法吗?

EN

Stack Overflow用户

回答已采纳

发布于 2019-03-29 20:41:09

您需要在programs.cs中配置您的记录器

代码语言:javascript
运行
复制
    public static IWebHostBuilder CreateWebHostBuilder(string[] args)
    {
        return WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
                .UseSerilog((context, configuration) => configuration
                .Enrich.FromLogContext()
                .MinimumLevel.Debug()
                .WriteTo.Console(),
                preserveStaticLogger:true);
    }

您可以删除所有其他Serilog引用(在startup.cs中)和"Log.CloseAndFlush()“指令(它将自动关闭)

然后,您可以在任何需要的地方注入ILogger<T>接口。

顺便说一句:我不确定是否需要"preserveStaticLogger“。

票数 14
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55422528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档