Serilog 的 AddSerilog 无法识别

Posted

技术标签:

【中文标题】Serilog 的 AddSerilog 无法识别【英文标题】:Serilog's AddSerilog is not recognized 【发布时间】:2016-12-05 16:18:40 【问题描述】:

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

“错误 CS1061 'ILoggerFactory' 不包含 'AddSerilog' 的定义,并且没有扩展方法 'AddSerilog' 接受第一个...”。

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

【问题讨论】:

显示你的 project.json 文件 "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" 这只是文件的一部分。由于字符太多,我无法全部包含在内。 OK 找到了,我的错....忘记安装包 Serilog.Extensions.Logging...谢谢乔,您的评论帮助我朝着正确的方向前进。 仅供参考,当我要求您发布 project.json 时,我的意思是编辑您的问题并将其添加到那里,它会适合那里但不适合 cmets 【参考方案1】:

您可能会忘记 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,但没有一个,告诉你任何地方你也需要这个。雪上加霜的是,在主库中对它的引用很弱,因此 dotnetcore 解析了库库,而不是方法,因此没有迹象表明您需要另一个库,在智能感知中。如果可以的话,我会投票一百万次。 Carlos 于 2019 年 1 月更新了他的 .NET Core 2.2 帖子:carlos.mendible.com/2019/01/14/…【参考方案2】:

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

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

【讨论】:

.Net Core 3.1 也需要这个。【参考方案3】:

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

右击解决方案

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

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

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

你会得到一个不同版本的下拉列表,你应该选择最新的。

或者从包管理器控制台更快地验证默认项目下拉菜单是否已选择并运行您的项目

install-package Serilog.Extensions.Logging

【讨论】:

好消息。谢谢詹姆斯。【参考方案4】:

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

这会将下面的行添加到 YourProjectName.csproj

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

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于Serilog 的 AddSerilog 无法识别的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Serilog 登录 MS SQL

Serilog:无法使用 MongoDb 接收器登录到 MongoDb

无法将类型字符串隐式转换为 serilog.formatting.ITextformatter

无法从Windows服务中托管的Asp.net核心网站启动多个Serilog接收器

无法使用 Serilog 从 HttpContext 访问用户声明以进行日志记录

Serilog 不会覆盖 ILogger 的最低级别