簡體   English   中英

Nlog 結構化日志記錄不適用於類

[英]Nlog structured logging not working for classes

我有以下代碼:

var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
logger.Info("Application starting");

var a = new A() { B = 5, C = "Test123" };
var b = new { B = a.B, C = a.C};

logger.Info("Test: {@value1}", a); // Outputs "Test: A" (Writes namespace, not values)
logger.Info("Test: {@value1}", b); // Outputs "Test: {"a":5, "c":"Sasadasd"}" (Nice)

class A 
{
  public int B;
  public string C;
}

我沒有對類進行結構化日志記錄並將它們轉換為 json,而是在對象上調用了 .ToString() 。 我只是不明白我該怎么辦。 我在整個互聯網上搜索了大約 8 個小時,似乎沒有人和我有同樣的問題。 請幫助:(

我的配置文件:

"NLog": {
    "throwConfigExceptions": true,
    "variables": {
      "solution": "A",
      "project": "A.A"
    },
    "targets": {
      "c": {
        "type": "ColoredConsole",
        "layout": "${longdate} ${message}"
      }
    },
    "rules": [
      {
        "logger": "Microsoft.*",
        "maxLevel": "Info",
        "final": true
      },
      {
        "logger": "*",
        "maxLevel": "Warn",
        "writeTo": "c"
      },
      {
        "logger": "*",
        "minLevel": "Error",
        "writeTo": "c"
      }
    ]
  }

您需要 Nlog 的屬性來顯示 json 值:如果您使用此類,它將起作用:

public class A 
{
  public int B { get; set; }
  public string C { get;set; } 
}

這是 Nlog 的代碼示例: https ://dotnetfiddle.net/8zRtvO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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