SeriLog Azure 同步下降 }}?
SeriLog Azure sync dropping }}?
请求缺少字符的日志。
在 Program.cs 中,我使用
设置了 Serilog
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>().UseSerilog();
appsettings.json 有
"Serilog": {
"Using": [ "Serilog.Sinks.AzureTableStorage" ],
我的代码使用
记录一个对象对象
Using SeriLog
// etc
Log.Log.Information("REQUEST:" + Newtonsoft.Json.JsonConvert.SerializeObject(request));
当我使用
查询日志时
public void GetData()
{
var info = new StorageInfo();
var storageAccount = CloudStorageAccount.Parse(info.ConnectionString);
var query = TableQuery.GenerateFilterConditionForDate("Timestamp", QueryComparisons.GreaterThanOrEqual,DateTimeOffset.Now.AddDays(-1).Date);
var exQuery = new TableQuery<LogEntity>().Where(query);
var tableClient = storageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference(info.TableName);
var results = table.ExecuteQuery(exQuery);
foreach (LogEntity entity in results.OrderBy(x=>x.Timestamp))
{
var s =$"log: {entity.PartitionKey}, \t{entity.RenderedMessage},\t{entity.Timestamp},\t{entity.Timestamp.Millisecond} ms";
Trace.WriteLine(s);
}
}
但是,当我将输出复制并粘贴到 VSCode 并将格式设置为 Json 时,我发现缺少一些右大括号
这里的主要问题是您没有让 request
成为 message-insert,通常情况下应该如此。
Log.Log.Information("REQUEST:" + Newtonsoft.Json.JsonConvert.SerializeObject(request));
应该变成:
Log.Information("REQUEST: {request}", Newtonsoft.Json.JsonConvert.SerializeObject(request));
我推荐阅读 https://serilog.net/ and the serilog wiki,因为它提供了很好的背景知识和示例。
Serilog Analyzer 工具非常有助于在 VS 中编辑时即时指出此类内容。
请求缺少字符的日志。
在 Program.cs 中,我使用
设置了 Serilog public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>().UseSerilog();
appsettings.json 有
"Serilog": {
"Using": [ "Serilog.Sinks.AzureTableStorage" ],
我的代码使用
记录一个对象对象Using SeriLog
// etc
Log.Log.Information("REQUEST:" + Newtonsoft.Json.JsonConvert.SerializeObject(request));
当我使用
查询日志时 public void GetData()
{
var info = new StorageInfo();
var storageAccount = CloudStorageAccount.Parse(info.ConnectionString);
var query = TableQuery.GenerateFilterConditionForDate("Timestamp", QueryComparisons.GreaterThanOrEqual,DateTimeOffset.Now.AddDays(-1).Date);
var exQuery = new TableQuery<LogEntity>().Where(query);
var tableClient = storageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference(info.TableName);
var results = table.ExecuteQuery(exQuery);
foreach (LogEntity entity in results.OrderBy(x=>x.Timestamp))
{
var s =$"log: {entity.PartitionKey}, \t{entity.RenderedMessage},\t{entity.Timestamp},\t{entity.Timestamp.Millisecond} ms";
Trace.WriteLine(s);
}
}
但是,当我将输出复制并粘贴到 VSCode 并将格式设置为 Json 时,我发现缺少一些右大括号
这里的主要问题是您没有让 request
成为 message-insert,通常情况下应该如此。
Log.Log.Information("REQUEST:" + Newtonsoft.Json.JsonConvert.SerializeObject(request));
应该变成:
Log.Information("REQUEST: {request}", Newtonsoft.Json.JsonConvert.SerializeObject(request));
我推荐阅读 https://serilog.net/ and the serilog wiki,因为它提供了很好的背景知识和示例。
Serilog Analyzer 工具非常有助于在 VS 中编辑时即时指出此类内容。