gpt4 book ai didi

.net - 使用 NLog 记录方法名称和参数

转载 作者:行者123 更新时间:2023-12-02 02:13:38 25 4
gpt4 key购买 nike

如何使用 NLog 记录调用方法及其传入参数?如果不可能:我可以将一些参数传递给记录器,以便它们出现在最终的日志消息中吗?

最佳答案

NLog 允许您捕获 additional context使用 LogEvent:

Logger logger = LogManager.GetCurrentClassLogger();
LogEventInfo theEvent = new LogEventInfo(LogLevel.Debug, null, "Pass my custom value");
theEvent.Properties["MyValue"] = "My custom string";
theEvent.Properties["MyDateTimeValue"] = new DateTime(2015, 08, 30, 11, 26, 50);
theEvent.Properties["MyDateTimeValueWithCulture"] = new DateTime(2015, 08, 30, 11, 26, 50);
theEvent.Properties["MyDateTimeValueWithCultureAndFormat"] = new DateTime(2015, 08, 30, 11, 26, 50);
logger.Log(theEvent);

然后可以使用${all-event-properties}提取

另请参阅:https://github.com/NLog/NLog/wiki/EventProperties-Layout-Renderer

另请参阅:https://github.com/NLog/NLog/wiki/All-Event-Properties-Layout-Renderer

您可以通过使用 [System.Runtime.CompilerServices.CallerMemberName] methodName 作为参数创建自己的日志方法来自动捕获方法名称。另请参阅:https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.callermembernameattribute

如果使用LogManager.GetCurrentClassLogger()来获取类的记录器,那么您可以使用${logger}来呈现类名。

NLog v5 引入了新的 fluent-Logger-API ,以最小的开销捕获源文件 + 行号 + 类名,以便与 ${callsite:captureStackTrace=false} 一起使用。 :

_logger.ForInfoEvent()
.Message("This is a fluent message {0}", "test")
.Property("PropertyName", "PropertyValue")
.Log();

关于.net - 使用 NLog 记录方法名称和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12493301/

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