[英]How to specify default fallback value when empty NLog Property Value
我正在嘗試找出一種在 c#/.net6 下使用 NLog 5.1.0 時轉儲屬性/項目默認值的方法
try
{
string loggerName = $"fred";
string consoleInstanceTarget = $"{loggerName}.console";
string DEF_LAYOUT = "date=${date} level=${level} myprop=${event-properties:item=myprop} message=${message}";
LoggingConfiguration nlc = (LogManager.Configuration = new LoggingConfiguration());
// console
ConsoleTarget _consoleTarget = new ConsoleTarget { Name = consoleInstanceTarget, Layout = DEF_LAYOUT };
nlc.AddTarget(_consoleTarget);
nlc.LoggingRules.Add(new LoggingRule($"{loggerName}", NLog.LogLevel.Info, _consoleTarget));
NLog.LogManager.ReconfigExistingLoggers();
//
// Grab our new logger to narrow our log focus
//
Logger _logger = LogManager.GetLogger(loggerName);
_logger.Info("my message");
_logger.WithProperties(new Dictionary<string, object>() { { "myprop", "myprop-value" } }).Info("my new message");
}
catch (Exception ex)
{
Console.Error.WriteLine();
}
當我運行時,“myprop”沒有默認值轉儲
date=2022/12/07 11:48:27.803 level=Info myprop= message=my message
date=2022/12/07 11:48:31.468 level=Info myprop=myprop-value message=my new message
我希望 event-properties:item=myprop,default='stuff' 會起作用。
我已經沿着使用注冊自定義渲染器的路線走下去了
NLog.LayoutRenderers.LayoutRenderer.Register("myprop", (logEvent, key) => { return "default"; });
但它不會被調用,因為該屬性嵌入在事件屬性中。 如果我隨后將我的布局更新為簡單的 ${myprop},那么我的渲染函數會被調用,但我需要始終發送動態值以查看它是否基於事件和屬性鍵可用。
關於如何為 ${event-properties} 指定默認值的任何想法
蒂亞
NLog 提供了whenEmpty=
,當 LogEvent Property-value 缺失或為空時,可以輸出 fallback-value。
例子:
${event-properties:item=myprop:whenEmpty=stuff}
另見: https ://github.com/NLog/NLog/wiki/WhenEmpty-Layout-Renderer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.