2017-05-07 64 views
2

我能写日志Azure的表存储在使用AzureTableStorage这样我的MVC应用程序:如何使用Serilog读取写入Azure表存储的日志?

var storage = CloudStorageAccount 
      .Parse(ConfigurationManager.AppSettings["AzureStorageConnectionString"]); 

string tableName = Constants.AzureLogTableName; 

_log = new LoggerConfiguration() 
      .WriteTo.AzureTableStorageWithProperties(storage, storageTableName: tableName) 
      .MinimumLevel.Debug() 
      .CreateLogger(); 

_log.Error("Error"); 

我怎样才能读取表存储日志?

我已经花了约20分钟的AzureTableStorageSerilogGitHub项目看文档和也搜寻堆栈溢出,但我无法弄清楚如何做到这一点。

我错过了什么?

回答

2

如何从表格存储中读取日志?

日志在Azure Table中都是这样的,

enter image description here

要读出来,你可以使用Azure Table中存储C#SDK从日志表中读取数据。

  1. 定义从TableEnity继承一个实体。
public class LogEntity : TableEntity 
{ 
    public LogEntity() { } 


    public string MessageTemplate { get; set; } 

    public string Level { get; set; } 

    public string RenderedMessage { get; set; } 
} 
  • 读注销使用以下代码。
  • var storage = CloudStorageAccount 
          .Parse(ConfigurationManager.AppSettings["AzureStorageConnectionString"]); 
    
    
    CloudTableClient tableClient = storage.CreateCloudTableClient(); 
    
    string tableName = Constants.AzureLogTableName; 
    CloudTable table = tableClient.GetTableReference(tableName); 
    
    TableQuery<LogEntity> query = new TableQuery<LogEntity>(); 
    
    // Print the fields for each customer. 
    foreach (LogEntity entity in table.ExecuteQuery(query)) 
    { 
        Console.WriteLine("{0}, {1}\t{2}\t{3}\t{4}", entity.PartitionKey, entity.RowKey, 
         entity.MessageTemplate, entity.Level, entity.RenderedMessage); 
    } 
    
    +0

    谢谢,我知道我在做一些愚蠢的事:( –

    相关问题