Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core Serilog从上下文扩展不起作用_Asp.net Core_Logging_Serilog - Fatal编程技术网

Asp.net core Serilog从上下文扩展不起作用

Asp.net core Serilog从上下文扩展不起作用,asp.net-core,logging,serilog,Asp.net Core,Logging,Serilog,我有一个ASP.netcore应用程序,我试图用一个属性丰富Serilog记录器,并通过方法调用传递它。 我使用了Serilog.Context对其进行了丰富,但毫无用处,日志中不存在该属性 节目 Log.Logger = new LoggerConfiguration().Enrich.FromLogContext() .WriteTo.File(logpath) .CreateLogger(); 控制器 public clas

我有一个
ASP.netcore
应用程序,我试图用一个属性丰富
Serilog
记录器,并通过方法调用传递它。 我使用了
Serilog.Context
对其进行了丰富,但毫无用处,日志中不存在该属性

节目

Log.Logger = new LoggerConfiguration().Enrich.FromLogContext()
                .WriteTo.File(logpath)
                .CreateLogger();
控制器

public class SomeController{

   public ILogger logger=Log.ForContext<SomeController>();
   private SomeService Service;

   public SomeController(SomeService serv)
   {
      this.service=serv;
   }

   [HttpGet]
   public async Task DoSomething()
   {
          string corellationId=Guid.NewGuid().ToString();
          LogContext.PushProperty("id",corellationId);
          service.Run();
    }
}

p.S如果重要的话,该服务将通过依赖注入注入。

您需要在中使用
属性
标记,例如

为接收器格式化输出时,例如:

 .WriteTo.File(logpath, outputTemplate: mt)

(旁白:你应该是)

所以为了让我在格式中放入一个
字符串
这样的表单就足够了:
“{Timestamp:Yy:Mm:dd HH:Mm:ss}[{Level:u3}]{corellationId}{Message}
?是的,如果你总是使用LogContext.Push(“corellationId”,value)
,那么这将显示每条消息的值(
{Properties}
token显示消息或消息模板中未引用的所有属性)我只想在每个请求中绑定一次属性,当我的请求进入一个
ASP网络控制器时,
,然后出现在来自嵌套方法的所有日志中。您需要使用LogContext.Push来实现这一点-这可以在中间件中完成,或者通过使用(LogContext.Push(“req”,id))执行
在控制器中等。最好找到一个关于Serilog LogContext的好教程
"[id] [value]"+ "[SomeService log]" 
let mt = "{LogLevel:u1}|{SourceContext}|{Message:l}|{Properties}{NewLine}{Exception}"
 .WriteTo.File(logpath, outputTemplate: mt)