Serilog的AddSerilog无法识别

ash*_*lon 16 .net c# serilog asp.net-core

我正在尝试调用loggerFactory.AddSerilog(); 根据文档,但无法识别AddSerilog方法:

"错误CS1061'ILoggerFactory'不包含'AddSerilog'的定义,也没有扩展方法'AddSerilog'接受第一个......".

我正在使用ASP.NET CORE和完整的.NET框架.我究竟做错了什么?

小智 42

您可能会在project.json中忘记以下这一行

"Serilog.Extensions.Logging": "1.0.0",

另见https://carlos.mendible.com/2016/09/19/step-step-serilog-asp-net-core/

  • 谢谢.这让我疯了.没有提到这一点.所有教程和git hub都提到了serilog主dll和serilog.extensions.logging.file,但没有一个,告诉你任何地方你也需要这个.为了增加对受伤的侮辱,在主lib中对它有一个弱的参考,所以dotnetcore解析了lib基础,但不解析方法,因此没有迹象表明你需要另外一个lib,在intellisense中.如果可以的话,我会投票一百万次. (4认同)
  • Carlos 已更新了截至 2019 年 1 月的 .NET Core 2.2 帖子:https://carlos.mendible.com/2019/01/14/updated-step-step-serilog-asp-net-core/ (2认同)

nbr*_*osz 21

不同的情况,但同样的问题.在我的例子中,我使用的是.Net Core 2.1,并且有一个对Serilog的NuGet引用,但是缺少对Serilog.AspNetCore的引用.问题首先表现为.UserSerilog()未找到Program.cs下我的CreateWebHostBuilder静态方法的IWebHostBuilder.

Serilog.AspNetCore NuGet包添加到我的项目中解决了这个问题.

  • .Net Core 3.1 也需要这一点。 (2认同)

Jam*_*zba 12

发布的答案是正确的,但我想补充一点,您可能想要使用NuGet包管理器,这样您就可以获得最新版本.

右键单击解决方案

- >选择"管理解决方案的NuGet包"

- >在搜索框中输入"serilog.extensions.logging"

- >单击Serilog.Extensions.Logging并按安装

您将获得您应该选择最新版本的不同版本的下拉列表.

或者从Package Manager控制台更快地验证Default Project下拉列表是否已选择并运行您的项目

install-package Serilog.Extensions.Logging
Run Code Online (Sandbox Code Playgroud)


Div*_*van 5

在 .NET Core 3.1 上,在控制台应用程序中,我只需安装serilog.extentions.hosting NuGet 包。

在此输入图像描述

这会将以下行添加到YourProjectName .csproj中的ItemGroup

<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.7" />
Run Code Online (Sandbox Code Playgroud)