gpt4 book ai didi

vb.net - NLog - 在运行时设置记录器级别?

转载 作者:行者123 更新时间:2023-12-05 01:47:35 27 4
gpt4 key购买 nike

我正在使用最新的 NLog v3.1,并且对如何在运行时设置日志记录级别有疑问。我的 NLog.config 文件中只有一个目标和记录器。记录器名称 =“*”,最小级别 =“信息”。我在一个模块中有以下代码来声明记录器以及一个函数 GetLoggingLevel,我可以传入记录器名称以检索它的级别。但是,如何设置日志记录级别?目前我必须打开 NLog.config XML 并修改 XML 中的最小级别。由于我有 autoReload = "true",它会产生影响 - 但我希望有一种方法可以使用 NLog 方法/属性来设置它。

Imports System.Xml
Imports NLog

Module modLogging

Private m_Log As Logger

Public ReadOnly Property Log As Logger
Get
If (m_Log Is Nothing) Then
m_Log = LogManager.GetCurrentClassLogger
End If
Return m_Log
End Get
End Property

Public Sub LogShutdown()
LogManager.Shutdown()
End Sub

Public Function GetLoggingLevel(ByVal loggerName) As String
Dim level As String = String.Empty

If (LogManager.GetLogger(loggerName).IsInfoEnabled) Then
level = "Info"
ElseIf (LogManager.GetLogger(loggerName).IsErrorEnabled) Then
level = "Error"
ElseIf (LogManager.GetLogger(loggerName).IsDebugEnabled) Then
level = "Debug"
End If

Return (level)
End Function

有了这个,我可以很容易地在我的项目中调用 Log.Info("some text") 或 Log.Error("some error") 等。我可以获得当前级别并将其显示给用户,但我希望用户能够将日志记录级别更改为调试、信息、错误等,但我不知道如何在配置文件中设置最小级别在运行时无需直接加载和修改配置 XML。

最佳答案

您可以访问 LogManager.Configuration.LoggingRules 并启用或禁用特定级别的日志记录。例如,使用一个带有 NLog 配置的小项目:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="consoleDetailed"
xsi:type="Console"
layout="${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="consoleDetailed" />
</rules>
</nlog>

和像

这样的控制台应用程序
Sub Main()

Dim log As Logger = LogManager.GetCurrentClassLogger

log.Debug("debug message")
log.Info("info message")

For Each rule As LoggingRule In LogManager.Configuration.LoggingRules
rule.DisableLoggingForLevel(LogLevel.Debug)
Next

LogManager.ReconfigExistingLoggers()

log.Debug("debug message") REM This line will not be logged
log.Info("info message")

Console.ReadLine()

End Sub

关于vb.net - NLog - 在运行时设置记录器级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24496306/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com