我正在尝试设置客户端-服务器应用程序的基本原型,两者都使用ASP.NET Core2.0。作为这项工作的一部分,我将诊断信息发送给Seq。在每个应用程序的Startup类中,我使用Seq.Extensions.Logging并配置Seq接收器,如下所示:
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(builder =>
{
builder
.SetMinimumLevel(LogLevel.Debug)
.AddSeq();
});这是可行的;所有的事件都会出现在Seq中。但是,不可能容易地区分任何特定事件来自哪个应用程序。
在过去,使用Serilog,我已经能够向记录器添加属性,这些属性包含在每个事件中。通常,我会将应用程序的名称和运行该应用程序的主机添加为一对附加属性:
Log.Logger = new LoggerConfiguration()
.Enrich.WithMachineName()
// ...other configuration...
.CreateLogger();有没有办法配置Microsoft日志扩展来做同样的事情?
发布于 2018-11-22 11:05:52
有两个选项供您选择。
Seq功能。对于Seq,它提供了用于标识客户端应用程序的API Keys。您可以添加具有特定名称的Applied properties,如您的项目名称,并通过以下方式配置API键
services.AddLogging(loggingBuilder =>
{
loggingBuilder.AddSeq(Configuration.GetSection("Seq"));
});或
services.AddLogging(loggingBuilder =>
{
loggingBuilder.AddSeq("http://xxx:5341", apiKey: "K5HzACIfiQxr67CKlvUj");
});Serilog配置输出模板,如var输出= "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {Level} {Message} {ActionName} {UserName} {NewLine}{Exception} {MachineName}";Log.Logger = LoggerConfiguration() .Enrich.FromLogContext() //在每个日志条目.Enrich.WithProperty("MachineName",Environment.MachineName)上填充'User‘属性//新字段.WriteTo.RollingFile(“Logs/app-{LoggerConfiguration}.txt”,outputTemplate: output) .WriteTo.Seq("http://xxx:5341",apiKey:"K5HzACIfiQxr67CKlvUj") .CreateLogger();loggerFactory //.AddFile("Logs/app-{Date}.txt") .AddSerilog();
https://stackoverflow.com/questions/53409133
复制相似问题