问题标签 [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 回答
1154 浏览

.net-core - 在 asp.net 核心中使用 ILogger 的静态实例进行日志记录不起作用

ILogger Factory 不使用静态实例进行日志记录。我想在类项目的静态方法中调用 ILogger。任何人都可以帮我解决下面的代码。

0 投票
0 回答
889 浏览

c# - 依赖注入 ILoggerFactory,中间件中的 ILogger,记录器未执行

尝试构建一个中间件来记录每个请求的信息。ASP.NET Core 3.1 学习一些基础知识

我试图理解一些奇怪的行为。这是我的中间件构造函数:

使用它按预期工作。每个请求都会记录消息:

当我使用下面的代码时:

执行结束,_logger.LogInformation但似乎没有执行,没有记录,没有错误,没有问题,只是跳转到下一行代码。用 WatchList 查看 _logger 我看不出这两种方法有什么区别。

没有记录任何内容的相同行为,如果我使用也不会遇到错误ILogger<T>

我无法注入纯文本ILogger,因为它会引发运行时错误:

尝试激活“Microsoft.AspNetCore.Builder.ContextRequestLoggingMiddleware”时无法解析“Microsoft.Extensions.Logging.ILogger”类型的服务。

再次检查对象,我看不到我使用的不同方法之间的区别。那么这是为什么呢?我会认为ILogger<T>是最佳选择,但为什么它在这里不起作用?它在 Controller 中对我有用。谢谢你的解释。

对于上下文,我的CreateHostBuilder

我的Startup课的一部分:

编辑 解决方案:我犯了一个错误,在构建类时ContextRequestLoggingMiddleware我将它放在 NameSpace 下Microsoft.AspNetCore.Builder。有了这个,如何让记录器在 MiddleWare 中工作的唯一方法是通过 ILoggerFactory 并创建记录器,但它只有一种方式工作

一旦我将类放在不同的 NameSpace 下,其他方法也开始起作用

而且ILogger<ContextRequestLoggingMiddleware>现在也可以通过

所以下面的建筑类现在对我有用。有趣的是名称空间的更改如何使其工作。

}

0 投票
1 回答
1082 浏览

c# - 使用 FakeItEasy 测试 ILogger

我正在为自己做一个有趣的项目来学习 blazor、许多核心概念和一般实践。

我正在尝试为 FakeItEasy 实现记录器扩展,以便更轻松地测试 Microsoft 的 ILogger。基于https://dev.azure.com/BrideButler/Bride%20Butler%20Open%20Source/_git/FakeItEasy.DotnetCore.LoggerExtensions?path=%2FFakeItEasy.DotnetCore.LoggerExtensions%2FLoggerExtensions.cs但现在正试图让它工作对于.NET 5。现在这FormattedLogValues是内部代码不再起作用了。

目标是在我的测试中有这样的东西(而不是使用 Moq) _logger.VerifyLog(LogLevel.Information, "Get Weather Called").MustHaveHappenedOnceExactly(); 或者A.CallTo(() => _logger.Log(LogLevel.Information, "Get Weather Called").MustHaveHappenedOnceExactly();它不必有语法糖,但我想让它与 FakeItEasy 而不是 Moq 一起工作。

以下是所有涉及的代码。Microsoft.Extensions.Logging.ILogger.Log当然,我在第一行1[System.Object] vsMicrosoft.Extensions.Logging.ILogger 1[Microsoft.Extensions.Logging.FormattedLogValues]`中看到了一些差异,1[Server.Controllers.WeatherForecastController].Log但我不知道如何“解决”这个问题,因为我不完全理解出了什么问题。

我的问题显然是,我应该怎么做才能解决它,但也很好奇我缺少什么部分。

我的错误如下:

测试:(使用 xUnit、FakeItEasy、Fixture)

记录器扩展

测试构造函数:

测试:

控制器:

更新: 找到的选项

仅测试是否使用正确的日志级别调用了 logger:

切换到最小起订量:

0 投票
1 回答
1961 浏览

c# - Azure 函数未记录自定义事件、对应用洞察的依赖关系

我们有一个Azure Function V3开发的C#. 我们试图将一些custom events, dependencies等记录到Azure Application Insights. 我们无法使用 登录应用洞察TelemetryClient。代码运行良好,没有任何错误。此外,可以看到instrumentation key从配置文件中检索到。但是Ilogger,可以在应用洞察跟踪表中找到日志。请在下面找到我们使用的代码,

0 投票
1 回答
44 浏览

asp.net-core - ASP Core 在实用程序类中添加日志记录

我们自动将记录器注入到通用控制器类中。但是我们如何为泛型实用程序类派生一个记录器,该类的泛型类型与封闭的 Controller 不同?

有没有办法获取创建注入记录器实例的 LoggerFactory 并使用它来生成具有所有相同提供程序的新记录器?

0 投票
1 回答
43 浏览

.net-core - 访问发送到自定义记录器 .NETCore 3.1 的参数

我正在尝试实现自定义 ILogger 。网核 3.1

CustomLogger 类实现了 ILogger。需要实施的方法之一是:

从我的控制器中,我触发了 LogInformation 方法并传递了一个字符串和一个 KeyValuePair 列表,如下所示:

我的代码能够到达 Log<TState> 但我需要根据传入的参数执行一些逻辑。如何访问传递的参数?

0 投票
1 回答
169 浏览

c# - 我可以在没有 LoggerFactory 的情况下直接注入 ILogger

从 IoC 的角度来看,我们应该能够轻松设置和选择接口的实现。

如果我创建自定义实现ILogger,我可以直接将它注入到没有ILoggerFactory-ILoggerProvider-ILogger结构的控制器中吗?

通过这种方式,我可以减少设置开销,并对 Logger 进行更多控制。例如,我可以投射和访问CustomProperty. 相反,ILoggerFactory-ILoggerProvider-ILoggerchain创建的记录器会维护一个ILoggers的集合,我不能再访问我的CustomLogger了。

代码如下所示。这是一个可行的解决方案吗?

定义 CustomLogger

设置依赖注入

访问ILoggerwithCustomLogger实现

0 投票
1 回答
236 浏览

c# - 具有依赖注入的类的新实例 - C#

我有以下问题:

我有一堂课,我通过 DI 注入 Logger。

但最后我想实例化这个类。

这是代码:

现在的问题是,new DokumentInhaltJson现在希望将记录器作为第二个参数。

我可以在这里做什么?

0 投票
1 回答
400 浏览

xamarin.forms - 在 Prism Xamarin.Forms 中使用多个 Microsoft.Extension.Logging ILogger

我有一个使用 Prism 的 xamarin.forms 应用程序。但是我需要向它添加几个 microsoft.extensions.logging ILoggers。在用于日志记录的标准 microsoft.extensions.dependencyinjection 设置中,我通常会这样做

我将如何使用 Prism 做到这一点?我还能获得打字的 ILogger 吗?例如

public ThingieService(ILogger<ThingieService> logger)

0 投票
1 回答
1687 浏览

c# - 如何在net core 3.1的多个项目中将NLog作为ILogger注入

现在我正在创建一个 Web 服务并开始使用 NLog 记录器。我对其进行了配置,并且在这样的 Web 服务项目中使用它时它可以工作:

但是在项目API上使用它时(当它调用 CurrentApi 时)没有任何记录:

基本控制器类如下所示:

如果我使用NLog.Logger log = NLog.LogManager.GetCurrentClassLogger(); API项目上它可以工作,但是我想将它注入到构造函数中,我该怎么做呢?

我尝试将包 NLog 添加到我想使用记录器的所有项目中,就像这个问题的解决方案一样,但仍然没有用。

编辑:我如何注册 NLog:

Api模块注册: