问题标签 [ilogger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
564 浏览

c# - 如何从 log4net 切换到 Microsoft.Extensions.Logging 多个库

我有引用多个库(核心、标准)的 ac# 项目。每个库都以下列方式使用 log4net:

主工程配置Logger:

层次结构如下所示:

好的,通过上述设置,我可以看到每个库的日志条目。


现在这些库应该现代化并变得更加通用,以便消费者可以决定他最喜欢的记录器(例如 NLog、Console 等)。因此我想使用Microsoft.Logging.Extensions. 我已经阅读了很多文档、指南、提示等,并发现这ILoggerFactory可能是最好的开始方式,但是

  1. 没有人解释,如何使用ILogger多层以及如何在消费项目中配置记录器,
  2. 几乎我发现的每个示例都在 DI 的构造函数中添加了ILogger/ILogger<T>参数,但我无法更改每个库的构造函数的签名。有没有办法以不同的方式做到这一点?
  3. 我读过一些关于autofac但没有完全理解的东西。也许我可以用它来定义我想在日志文件中看到哪些类型/库?

UPD 1 是否有可能更改库代码并以与 log4net 相同的方式处理它,但使用未指定的 logprovider,例如

那么如何在我的主项目中配置记录器(例如 log4net 或调试控制台)?我以后可以添加提供者吗?

很抱歉这些问题,但微软关于超出 asp.net 范围(并且没有 DependencyService)的日志记录扩展的文档真的很差。

0 投票
1 回答
1253 浏览

c# - 使用 Azure Function V3,如何将现有的 Ilogger 注入到新的类文件中?

我使用 VS2019 创建了一个新的 Azure Function,V3,CORE 3.1。它使用一个基本的 HTTPTrigger。我创建了一个新的类文件,并希望将现有的 Ilogger 注入其中。如何做到这一点?我是新手,所以任何帮助将不胜感激。

0 投票
1 回答
471 浏览

azure-cosmosdb - CreateContainerIfNotExistsAsync 挂起、停止、永不返回

我有一个可以读取和写入 CosmosDb 的 Blazor 应用程序。尝试添加一些新功能,这些功能在本地运行良好,但在部署到 Azure 后就崩溃了。我已将问题追溯到我的CosmosDbService. 我想添加ILoggerCosmosDbService进一步追踪我的问题。但是,在测试 DI 时,我的代码停在CreateDatabaseIfNotExistsAsync(databasename). 之前的代码没有错误。没有例外,没有超时,没有什么只是无声的失败。Azure 没有报告任何内容。如果我将所有内容都回滚到原始状态,它就会起作用。显然它在某个地方,但我没有看到它。所以我的问题是 1)为什么我的应用程序现在停止/挂起?2) 我是否将 ILogger 正确注入到我的 CosmosDbService 中?这是相关的代码。

提前致谢。

--更新 2020-12-06 ---

谢谢广哥。您的问题和建议激发了新的思路。我要感谢你的答案。

  1. 我注意到新行Startup.cs导致服务在实际程序执行的后期延迟加载:

当我将此行恢复为其原始语法时,它在启动期间成功初始化。

  1. 将 ILogger 注入到我的 CosmosDBService 中。在日志记录( https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0 )上进行重新 RTFM似乎我需要改用工厂。所以我将实例化更改为:

并通过删除显式构造函数并使用隐式构造函数与 CosmosDBService 相对应。然后我能够将 Logger 添加到服务中。

  1. 最后,这使我能够跟踪我正在寻找的原始错误。

再次感谢您的帮助。

0 投票
0 回答
101 浏览

.net - 在带有 nlog 的 .net 框架中使用带有 ILogger 的 .net 标准 dll

我正在研究一个在 .Net Standard 中创建的 dll,供 .net core 和 .net framework 应用程序使用。

要求之一是在 dll 中进行日志记录,通过使用 microsoft.extensions.logging 中的 ILogger 接口,可以很容易地为 .net 核心应用程序实现它。

有什么方法可以将 .net 框架中 NLog 的 ILogger 实现转换为 microsoft.extensions.logging 中的 ILogger?

0 投票
1 回答
74 浏览

c# - 从 Main 开始的类中的 iLogger

与 iLogger 斗争。对我来说,目前尚不清楚如何在 Web 控制器旁边实例化日志实例。

主要我正在上演一个“版本监视器”:

在版本监视器构造函数中,我正在启动一个计时器:

我想做的就是现在记录某事。在经过的计时器事件中:

请您指导我,如何做到这一点,好吗?

提前致谢。

0 投票
1 回答
2118 浏览

asp.net-core - Logger Begin Scope 不适合我!.net 核心

所以这是我的日志配置:

我只是想从控制器方法中做到这一点

但这就是我在日志中得到的

有什么我想念的吗?

0 投票
1 回答
758 浏览

c# - DotNetCore 日志中的 [40m[32minfo[39m[22m[49m] 是什么意思

我在 Docker 容器中有一个 DotNet Core 应用程序,当我查看 ILogger 生成的日志时,我可以看到这些字符:

你能帮我理解它们的意思吗?

0 投票
0 回答
505 浏览

asp.net-core - 从 ILogger Scope 读取状态值

有没有办法读取/获取“当前范围”值?例如,我在 IPageFilter 中添加了一些“全局上下文”值:

如果我logger.LogInformation( "Doing something for {UserId}" );在任何页面处理期间调用,这将起作用,并且消息会以适当的UserId.

但是,使用 时LoggerMessage,如果您没有字符串参数,则会引发解析错误。

正确实施,它看起来像这样并传入一个字符串。

但是,如果我传入一个虚拟值,它将替换所有日志调用的“核心上下文”值。所以我希望能够做类似的事情,logger.SampleActivity( logger.Scope[ "UserId" ] );但它显然不存在。我是否有任何选项可LoggerMessage用于提高性能并使用“核心”UserId 属性?

0 投票
2 回答
2508 浏览

azure - 使用 Serilog 到 Application Insights 的 Azure 函数日志记录

我们将Azure Function V3与 dot net core 3.1 结合使用,并将跟踪和事件记录到Application Insights。这工作得很好。但是我们想将对象数据添加到日志有效负载中,因此我们使用Serilog

如果我们使用ILogger来自对象的接口namespace Microsoft.Extensions.Logging将不会被正确序列化。

如果我们使用Serilog接口,它可以工作,并且数据将在Application Insights中序列化:

Serilog

Startup.cs看起来像这样:

0 投票
0 回答
528 浏览

.net-core - ILogger - SpanId vs TraceId vs HttpContext.TraceIdentifier

我正在运行此 repo中的代码并从 Book.API 生成错误,我收到如下错误页面:

图片

请求 ID 为 |574e8e13-4e9d31fed64d4793。

当我查看文件中的日志条目时,我看到:

所以它似乎是匹配的SpanId而不是RequestId.

所以我的问题:

  1. 我正在观看 Pluralsight 课程,屏幕截图似乎可以RequestId正常显示。他的节目正确RequestId而我的节目怎么可能SpanId
  2. 我创建了一个新项目,据我所知,以与 repo 相同的方式实现了所有内容,但在我的日志属性中没有得到SpanIdTraceId或。ParentId猜猜我可能错过了什么?
  3. 是否应该SpanId在 WebApi 和网站调用之间匹配(即上面的两个日志,第一个是 Web API,第二个是 Web Site,并且都具有唯一的 Span/Request ID)?还是我应该使用 CorrelationId?
  4. 一般问题,SpanId、TraceId 和 HttpContext.TraceIdentifier 有什么区别?我的 error.cshtml 是否应该只使用TraceIdentifier而不是查看 Activity.Current.Id?

更新:我在 .NET 5 中实现了我的项目。这可能是日志中缺少属性的罪魁祸首,但其余问题仍然有效。

更新:我已经找到了 .NET 5 中缺少属性的解决方法。而且我还TraceId跨越了从站点到 api 的调用,但我想知道SpanId代表什么,我在网上很难找到它。