.NET Core 回退日志记录
.NET Core Fallback Logging
我的 ASP.NET 核心 GRPC 服务中有两个第 3 方日志记录提供程序。我能以某种方式“链接”这些日志提供者吗?我的意思是,日志提供程序 2 是否只能在日志提供程序 1 无法登录的情况下执行日志记录。
例如,如果我有一个 Application Insights 提供程序和 NLog 文件提供程序,我是否可以仅在我的服务无法连接到 Application Insights 基础结构时才能登录该文件?
您可以使用不同的 NLog 目标执行上述所有操作。所以 Azure Application Insight 有一个目标:https://www.nuget.org/packages/Microsoft.ApplicationInsights.NLogTarget/.
此外,如果您怀疑您的某些目标可能进展缓慢,您可以使用异步日志记录:https://github.com/NLog/NLog/wiki/AsyncWrapper-target
以我的愚见,设置一些规则使两种日志记录提供程序像链一样工作是没有必要的,也许是不可能的。
我们通常做的是让它们同时工作,就像使用NLog将日志写入文件并将日志发送到azure application insights一样。
顺便说一句,azure application insight可能因为某些意外而无法正常工作,但这是小概率事件。日志模块不工作的情况更有可能是应用程序崩溃了,然后应用程序中的所有模块都关闭了,包括两个日志模块。因此,即使具有在应用程序洞察不起作用时使 Nlog 工作的功能,结果也很可能是当应用程序洞察不起作用时,Nlog 也无法工作。
我的 ASP.NET 核心 GRPC 服务中有两个第 3 方日志记录提供程序。我能以某种方式“链接”这些日志提供者吗?我的意思是,日志提供程序 2 是否只能在日志提供程序 1 无法登录的情况下执行日志记录。 例如,如果我有一个 Application Insights 提供程序和 NLog 文件提供程序,我是否可以仅在我的服务无法连接到 Application Insights 基础结构时才能登录该文件?
您可以使用不同的 NLog 目标执行上述所有操作。所以 Azure Application Insight 有一个目标:https://www.nuget.org/packages/Microsoft.ApplicationInsights.NLogTarget/.
此外,如果您怀疑您的某些目标可能进展缓慢,您可以使用异步日志记录:https://github.com/NLog/NLog/wiki/AsyncWrapper-target
以我的愚见,设置一些规则使两种日志记录提供程序像链一样工作是没有必要的,也许是不可能的。
我们通常做的是让它们同时工作,就像使用NLog将日志写入文件并将日志发送到azure application insights一样。
顺便说一句,azure application insight可能因为某些意外而无法正常工作,但这是小概率事件。日志模块不工作的情况更有可能是应用程序崩溃了,然后应用程序中的所有模块都关闭了,包括两个日志模块。因此,即使具有在应用程序洞察不起作用时使 Nlog 工作的功能,结果也很可能是当应用程序洞察不起作用时,Nlog 也无法工作。