Rob*_*man 1 c# logging serilog
我是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();
}
Run Code Online (Sandbox Code Playgroud)
我希望可以记录到Person的详细信息,即Name Rob和Age45。但是,我发现以下记录到Sql Server Sink的Properties列中:
<properties><property key='Employee'>ConsoleApplication1.Person</property></properties>
Run Code Online (Sandbox Code Playgroud)
我哪里做错了?
对于此任务,Serilog提供了@解构运算符。
var sensorInput = new { Latitude = 25, Longitude = 134 };
Log.Information("Processing {@SensorInput}", sensorInput);
Run Code Online (Sandbox Code Playgroud)
如您所见,要进行销毁,您必须在键名之前设置@。您的示例代码中错过了
logger.Debug("Employee details {Employee}", employee);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |