问题标签 [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.
c# - 如何从 log4net 切换到 Microsoft.Extensions.Logging 多个库
我有引用多个库(核心、标准)的 ac# 项目。每个库都以下列方式使用 log4net:
主工程配置Logger:
层次结构如下所示:
好的,通过上述设置,我可以看到每个库的日志条目。
现在这些库应该现代化并变得更加通用,以便消费者可以决定他最喜欢的记录器(例如 NLog、Console 等)。因此我想使用Microsoft.Logging.Extensions
. 我已经阅读了很多文档、指南、提示等,并发现这ILoggerFactory
可能是最好的开始方式,但是
- 没有人解释,如何使用
ILogger
多层以及如何在消费项目中配置记录器, - 几乎我发现的每个示例都在 DI 的构造函数中添加了
ILogger
/ILogger<T>
参数,但我无法更改每个库的构造函数的签名。有没有办法以不同的方式做到这一点? - 我读过一些关于
autofac
但没有完全理解的东西。也许我可以用它来定义我想在日志文件中看到哪些类型/库?
UPD 1 是否有可能更改库代码并以与 log4net 相同的方式处理它,但使用未指定的 logprovider,例如
那么如何在我的主项目中配置记录器(例如 log4net 或调试控制台)?我以后可以添加提供者吗?
很抱歉这些问题,但微软关于超出 asp.net 范围(并且没有 DependencyService)的日志记录扩展的文档真的很差。
c# - 使用 Azure Function V3,如何将现有的 Ilogger 注入到新的类文件中?
我使用 VS2019 创建了一个新的 Azure Function,V3,CORE 3.1。它使用一个基本的 HTTPTrigger。我创建了一个新的类文件,并希望将现有的 Ilogger 注入其中。如何做到这一点?我是新手,所以任何帮助将不胜感激。
azure-cosmosdb - CreateContainerIfNotExistsAsync 挂起、停止、永不返回
我有一个可以读取和写入 CosmosDb 的 Blazor 应用程序。尝试添加一些新功能,这些功能在本地运行良好,但在部署到 Azure 后就崩溃了。我已将问题追溯到我的CosmosDbService
. 我想添加ILogger
并CosmosDbService
进一步追踪我的问题。但是,在测试 DI 时,我的代码停在CreateDatabaseIfNotExistsAsync(databasename)
. 之前的代码没有错误。没有例外,没有超时,没有什么只是无声的失败。Azure 没有报告任何内容。如果我将所有内容都回滚到原始状态,它就会起作用。显然它在某个地方,但我没有看到它。所以我的问题是 1)为什么我的应用程序现在停止/挂起?2) 我是否将 ILogger 正确注入到我的 CosmosDbService 中?这是相关的代码。
提前致谢。
--更新 2020-12-06 ---
谢谢广哥。您的问题和建议激发了新的思路。我要感谢你的答案。
- 我注意到新行
Startup.cs
导致服务在实际程序执行的后期延迟加载:
当我将此行恢复为其原始语法时,它在启动期间成功初始化。
- 将 ILogger 注入到我的 CosmosDBService 中。在日志记录( https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0 )上进行重新 RTFM似乎我需要改用工厂。所以我将实例化更改为:
并通过删除显式构造函数并使用隐式构造函数与 CosmosDBService 相对应。然后我能够将 Logger 添加到服务中。
- 最后,这使我能够跟踪我正在寻找的原始错误。
再次感谢您的帮助。
.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?
c# - 从 Main 开始的类中的 iLogger
与 iLogger 斗争。对我来说,目前尚不清楚如何在 Web 控制器旁边实例化日志实例。
主要我正在上演一个“版本监视器”:
在版本监视器构造函数中,我正在启动一个计时器:
我想做的就是现在记录某事。在经过的计时器事件中:
请您指导我,如何做到这一点,好吗?
提前致谢。
asp.net-core - Logger Begin Scope 不适合我!.net 核心
所以这是我的日志配置:
我只是想从控制器方法中做到这一点
但这就是我在日志中得到的
有什么我想念的吗?
c# - DotNetCore 日志中的 [40m[32minfo[39m[22m[49m] 是什么意思
我在 Docker 容器中有一个 DotNet Core 应用程序,当我查看 ILogger 生成的日志时,我可以看到这些字符:
你能帮我理解它们的意思吗?
asp.net-core - 从 ILogger Scope 读取状态值
有没有办法读取/获取“当前范围”值?例如,我在 IPageFilter 中添加了一些“全局上下文”值:
如果我logger.LogInformation( "Doing something for {UserId}" );
在任何页面处理期间调用,这将起作用,并且消息会以适当的UserId
.
但是,使用 时LoggerMessage
,如果您没有字符串参数,则会引发解析错误。
正确实施,它看起来像这样并传入一个字符串。
但是,如果我传入一个虚拟值,它将替换所有日志调用的“核心上下文”值。所以我希望能够做类似的事情,logger.SampleActivity( logger.Scope[ "UserId" ] );
但它显然不存在。我是否有任何选项可LoggerMessage
用于提高性能并使用“核心”UserId 属性?
azure - 使用 Serilog 到 Application Insights 的 Azure 函数日志记录
我们将Azure Function V3与 dot net core 3.1 结合使用,并将跟踪和事件记录到Application Insights。这工作得很好。但是我们想将对象数据添加到日志有效负载中,因此我们使用Serilog。
如果我们使用ILogger
来自对象的接口namespace Microsoft.Extensions.Logging
将不会被正确序列化。
如果我们使用Serilog接口,它可以工作,并且数据将在Application Insights中序列化:
Startup.cs
看起来像这样:
.net-core - ILogger - SpanId vs TraceId vs HttpContext.TraceIdentifier
我正在运行此 repo中的代码并从 Book.API 生成错误,我收到如下错误页面:
请求 ID 为 |574e8e13-4e9d31fed64d4793。
当我查看文件中的日志条目时,我看到:
所以它似乎是匹配的SpanId
而不是RequestId
.
所以我的问题:
- 我正在观看 Pluralsight 课程,屏幕截图似乎可以
RequestId
正常显示。他的节目正确RequestId
而我的节目怎么可能SpanId
? - 我创建了一个新项目,据我所知,以与 repo 相同的方式实现了所有内容,但在我的日志属性中没有得到
SpanId
、TraceId
或。ParentId
猜猜我可能错过了什么? - 是否应该
SpanId
在 WebApi 和网站调用之间匹配(即上面的两个日志,第一个是 Web API,第二个是 Web Site,并且都具有唯一的 Span/Request ID)?还是我应该使用 CorrelationId? - 一般问题,SpanId、TraceId 和 HttpContext.TraceIdentifier 有什么区别?我的 error.cshtml 是否应该只使用
TraceIdentifier
而不是查看 Activity.Current.Id?
更新:我在 .NET 5 中实现了我的项目。这可能是日志中缺少属性的罪魁祸首,但其余问题仍然有效。
更新:我已经找到了 .NET 5 中缺少属性的解决方法。而且我还TraceId
跨越了从站点到 api 的调用,但我想知道SpanId
代表什么,我在网上很难找到它。