我是Serilog的新手 - 試試看它是否會有所幫助。我使用Serilog v2和Serilog.Sinks.MsSqlServer V5Serilog是日誌記錄類型而不是對象內容
我有以下的控制檯應用程序代碼:
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();
}
我本來期望的人的詳細信息記錄,即名稱羅布和45歲。然而,我發現下面的記錄在屬性欄上的我的SQL Server水槽:
<properties><property key='Employee'>ConsoleApplication1.Person</property></properties>
我有什麼錯?
我認爲serilog的想法是爲了避免需要這樣的顯式序列化 - 它是一個結構化日誌記錄框架 –