gpt4 book ai didi

c# - Serilog 是记录类型而不是对象内容

转载 作者:太空宇宙 更新时间:2023-11-03 19:45:05 25 4
gpt4 key购买 nike

我是 Serilog 的新手 - 试试看是否有帮助。我正在使用 Serilog v2 和 Serilog.Sinks.MsSqlServer v5

我有以下控制台应用程序代码:

static void Main(string[] args)
{
var logger = CreateLogger();

var employee = new Person()
{
Name = "Rob",
Age = 45
};

logger.Debug("Employee details {Employee}", employee);

Console.ReadKey();

}

private static ILogger CreateLogger()
{

string levelString = SSOSettingsFileManager.SSOSettingsFileReader.ReadString(
"LCC.Common", "Serilog.MinimumLevel");

SerilogLevel level = (SerilogLevel)Enum.Parse(typeof(SerilogLevel), levelString);

string conString = SSOSettingsFileManager.SSOSettingsFileReader.ReadString(
"LCC.Common", "Serilog.ConnectionString");

var levelSwitch = new LoggingLevelSwitch();
levelSwitch.MinimumLevel = (Serilog.Events.LogEventLevel)level;

return new LoggerConfiguration()
.MinimumLevel.ControlledBy(levelSwitch)
.WriteTo.MSSqlServer(connectionString: conString, tableName: "Logs", autoCreateSqlTable: true)
.CreateLogger();
}

我希望记录人员的详细信息,即姓名 Rob 和年龄 45。但是,我发现以下记录到我的 Sql Server Sink 的“属性”列中:

<properties><property key='Employee'>ConsoleApplication1.Person</property></properties>

我哪里出错了?

最佳答案

这里是 Serilog documentation

For this task, Serilog provides the @ destructuring operator.

var sensorInput = new { Latitude = 25, Longitude = 134 };
Log.Information("Processing {@SensorInput}", sensorInput);

如您所见,要进行解构,您必须在键名前设置@。您的示例代码中遗漏了这一点

logger.Debug("Employee details {Employee}", employee);

关于c# - Serilog 是记录类型而不是对象内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46583905/

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