簡體   English   中英

空 NLog 屬性值時如何指定默認回退值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM