问题标签 [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.
mono - Serilog 不记录到文件,只记录到控制台
我目前正在开发一个单声道项目并想在那里使用 Microsoft.Logging + Serilog,但我偶然发现了以下问题:当我手动配置 Serilog 时,它会同时登录控制台和文件(如果我已经配置了两个参数)。但是当我使用配置文件时,Serilog 总是忽略对文件的日志记录。
找到配置文件并从那里读取参数,因为如果我在那里添加“控制台”,Serilog 会登录到控制台。
根据我的理解,使用这些设置,Serilog 应该登录到控制台和文件。我期待这个日志文件在"folder with appsettings.json"/logs
. 但它只登录到控制台。当我删除时"Console"
,它不会在任何地方记录。我不明白为什么会这样,所以我发布了一些基本的代码部分。如果我没有提供足够的信息,请在问题下方的评论中写信给我。
appsettings.json:
这是我在一个类中配置 Serilog 的方法,这些方法在应用程序启动后不久执行:
最后是方法AddLogger()
,LogApplicationStart()
和LogApplicationStart()
:
经过这一切,控制台中的输出是(是的,它是 Godot):
Mono:日志文件为:'C:\Users\Albert\AppData\Roaming/Godot/mono/mono_logs/2021_01_27 12.46.37(105008).txt'
[12:46:38 INF] 应用程序已启动
Mono 日志文件与我的日志文件无关。我还尝试在应用程序中添加Log.CloseAndFlush()
当前LogApplicationStart()
唯一的方法,但它也没有帮助我。
当然,我知道这里有很多类似的问题,但我找不到我的问题的解决方案。
wcf - 如何将 Application Insights 添加到 ILogger将 Unity DI 用于 WCF 服务
我的不幸任务是将 WCF 项目更新到 .NET Framework 4.8 并用 Microsoft Logging 和 Application Insights 替换现有的 log4net 异常处理。
我的方法是实现依赖注入以使实例化更容易,因为我已经习惯了 .NET Core 的这种设计方法。您可能知道,WCF 服务增加了其自身的复杂性,因为 WCF 负责实例化服务和较低级别的对象(如 custom customUserNamePasswordValidatorType
)。我能够通过实现 WCF 服务工厂并使用它更新 svc 标记来处理大部分问题。
我已经通过适当的 NuGet 包将 Application Insights 添加到项目中,这些包更新了web.config
适合httpModules
一般异常处理的。我什至可以添加自定义TelemetryInitializer
以Application_Start
在消息中包含一些自定义属性。
我的问题是ILogger<T>
将附加的 Application Insights 提供程序的实例添加到实例化服务中。
起初,由于Logger<T>
. 通过将 my 更新WcfServiceFactory
为以下内容已解决此问题
这允许将记录器的实例传递到每个服务的构造函数中。但是,对日志消息的调用永远不会写入 App Insights,并且对记录器的检查显示提供者为零。
我的猜测是,因为LoggerFactory
正在创建一个新的实例,所以在 中使用的已经存在的实例httpModules
被忽略了。
根据https://github.com/unitycontainer/microsoft-logging,我需要重构我正在做的事情并实际创建 a 的实例LoggerFactory
并手动添加所需的提供程序。我的问题是我无法弄清楚如何使用 Application Insights 做到这一点。在我使用它的任何其他地方,我只会调用AddApplicationInsights()
扩展方法,但这似乎不是一个选项(至少在 Unity 中不是)。
所以我想我的问题归结为以下问题
- 我可以
WcfServiceFactory
使用现有的 App Insights 日志记录吗?也许建立一些东西Global.asx
? - 如何在
WcfServiceFactory
包含自定义遥测时手动将 App Insights 注册为提供者?
c# - 如何在具有单例模式的 .NET 库中使用 ILogger 抽象?
我有一个当前使用 NLog 进行日志记录的类库。我想更新这个库以使用来自Microsoft.Extensions.Logging.AbstractionsILogger<T>
的抽象,以便这个库的使用者可以选择他们自己的日志框架。
该库使用带有私有构造函数和Instance属性的单例模式:
有什么建议可以让这个库保持单例,但允许消费者ILogger
在启动/对象创建时提供实现?有没有办法让这个库在不改变单例模式的情况下接受来自其他应用程序的日志记录实现?
.net-core - 简单场景中的 net core 3.1 dep inj 错误,ILogger 奖金问题
我无法让基本 DI 在我的核心 3.1 项目中工作。我的类有一个无参数构造函数,但在调用控制器方法时出现此错误:无法创建类型为“NRA_Courses.Interfaces.ICourseRunner”的实例。模型绑定的复杂类型不能是抽象类型或值类型,并且必须具有无参数构造函数。请注意,我什至添加了一个空构造函数以使其显式。我忽略了什么?
额外的问题,为什么我不能将日志记录注入这样的简单类?此代码在我尝试执行“= new Student()”的行上导致编译错误,因为 Student 不包含采用 0 个参数的构造函数。我认为这是另一个gimmee:
非常感谢!我花了时间研究,只是因为截止日期紧迫才问。
.net - 如何将服务注入 C# Dotnet Core ILogger?
我已按照https://docs.microsoft.com/en-us/dotnet/core/extensions/custom-logging-provider创建自定义记录器。我希望这个自定义记录器让消息由服务处理 - 我将在 DI 容器中作为服务提供。例如,将日志消息发送到 SignalR 集线器的客户端。
但是,这是不可能的,因为 ILogger 初始化发生在 Startup.cs 代码之前。是否有任何推荐的方式将消息从 ILogger 传递到另一个服务?我想在 ConfigureLogging 之前注册它会起作用,但我想先知道是否有任何明显的好选择。
azure-functions - 自定义 ILogger 范围值未按预期工作
我在这里遗漏了一些东西,因为大量文章表明它应该可以工作。该计划将创建一个自定义记录器实现,以便我可以以结构化的方式存储各种值。
但是,目前这些基础似乎不起作用。
我正在尝试使用范围ILogger
来设置某些值,例如transactionId
.
我正在使用 Azure 函数。在我添加的启动中
哪个工作正常。在我正在尝试的功能中..
我错过了什么?!
谢谢。
c# - 静态检测当前正在运行的 CmdLet
我有一个基础的 PowershellCmdLet
类,它构建了一个static IServiceProvider
. 从这个抽象派生的类CmdLet
然后利用IServiceProvider
for DI。因为IServiceProvider
is ,它会在每个 Powershell sessionstatic
中构建一次,而不是每次执行任何派生的 CmdLet 时。
各种服务包括一个带有Microsoft.Extensions.Logging.ILogger
. 我希望这些服务发出的日志在 Powershell 会话中发出。例如,当ILogger.LogTrace()
被调用时,我希望将其传递给CmdLet.WriteVerbose()
方法。
我CmdletLogger
按照这些思路创建了一个类:
我想通过 提供一个CmdletLogger
可用的IServiceProvider
,但我不知道如何检测当前正在运行CmdLet
的CmdletLoggerProvider
类:
我意识到我可以制作IServiceProvider
非静态的,并在连接日志记录时将其传递CmdLet
给类,但是为单个会话中执行的每个执行CmdletLoggerProvider
重新构建的性能影响......不值得。IServiceProvider
CmdLet
Powershell
我希望 Powershell 有类似的东西IHttpContextAccessor
,但我一直没能找到这样的东西。
作为参考,抽象CmdLet
类如下所示:
c# - 如何访问字典来自自定义 ILogger 日志方法中的状态参数?
我目前正在开发自定义 ILogger 实现,并希望能够将自定义日志记录参数作为 Dictionary<string, string> 传递。所以我这样调用 Ilogger 的日志函数:
我的问题是如何在 ILoggerLog<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
方法中访问实际的字典?它似乎最终出现在 TState 参数中,但我无法弄清楚如何从那里实际提取 Dictionary 。
c# - 如何将 Microsoft.Extesions.ILogger 与 NLog 一起使用?
我有一个系统,我想制作一个自定义日志来为每个用户创建单独的文件夹。现在,我在 NLog.Logger 中像自定义文件目标一样制作它
一切正常,但我想像 Microsoft.Extensions.ILogger 一样使用。如何将 NLog.Logger 导入 ILogger?或者我如何为 ILogger 进行自定义配置?