Serilog的AddSerilog未被识别。

45

我试图按照这个文档的要求调用 loggerFactory.AddSerilog();, 但是AddSerilog方法未被识别:

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

我正在使用带有完整.NET框架的ASP.NET CORE。 我做错了什么?


2
请展示你的 project.json 文件。 - Joe Audette
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "Microsoft.AspNetCore.StaticFiles": "1.0.0", "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", "Microsoft.Extensions.Configuration.Json": "1.0.0", "Microsoft.Extensions.Logging": "1.0.0", "Microsoft.Extensions.Logging.Console": "1.0.0", "Microsoft.Extensions.Logging.Debug": "1.0.0", "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", "Serilog": "2.1.0", "Serilog.Sinks.MSSqlServer": "4.0.0" - ashilon
这只是文件的一部分。由于字符太多,我无法包含全部内容。 - ashilon
1
找到了,是我的错...忘记安装 Serilog.Extensions.Logging 包了...谢谢 Joe,你的评论帮助我找对了方向。 - ashilon
2
只是为了以后参考,当我要求你发布project.json时,我是指编辑你的问题并将其添加到那里,它适合在那里,但不适合在评论中。 - Joe Audette
太好了,非常感谢Joe的指点,我之前没有想到这一点。 - ashilon
5个回答

88

8
谢谢。这让我疯狂了。没有任何地方提到这一点。所有的教程和 Git Hub 都提到了 Serilog 主要的 DLL 和 Serilog.Extensions.Logging.File,但没有人告诉你需要这个。更让人气馁的是,在主库中只有一个对它的弱引用,因此 dotnetcore 只会解析库的基础部分而不会解析方法,所以在智能感知中没有指示需要另一个库。如果可以的话,我会投一百万个赞。 - shawty
2
Carlos已于2019年1月更新了他的.NET Core 2.2帖子:https://carlos.mendible.com/2019/01/14/updated-step-step-serilog-asp-net-core/ - joynoele

40

虽然情况不同,但问题相同。在我的情况下,我使用的是.Net Core 2.1,并引用了Serilog NuGet包,但缺少对 Serilog.AspNetCore 的引用。这个问题首先表现为我的 CreateWebHostBuilder 静态方法中 Program.cs 下的 IWebHostBuilder 的 .UseSerilog() 找不到。

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


2
这也适用于 .Net Core 3.1。 - computercarguy

22
已发布的答案是正确的,但我想补充一点,你可能想使用NuGet包管理器,这样你就可以获得最新的版本。
右键单击解决方案
-> 选择“管理解决方案的NuGet包”
-> 在搜索框中输入“serilog.extensions.logging”
-> 点击Serilog.Extensions.Logging并安装
您将获得一个下拉列表,其中包含不同的版本,您应该选择最新的版本。
或者更快捷的方式是从Package Manager控制台验证默认项目下拉菜单是否选择了您的项目,然后运行。
install-package Serilog.Extensions.Logging

1
好的信息。谢谢詹姆斯。 - ashilon

5
在 .NET Core 3.1 中的控制台应用程序中,我只需要安装 serilog.extensions.hosting NuGet 包即可。
这将会在 YourProjectName.csproj 的 ItemGroup 下添加以下行:

enter image description here

<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.7" />

3
如果您已经将包Serilog.Extensions.Logging添加到项目中,那么只需要在代码文件的顶部添加using Serilog;即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接