C# 使用Serilog登录.NET

C# 使用Serilog登录.NET,c#,.net,logging,asp.net-core,C#,.net,Logging,Asp.net Core,在我的应用程序中,用户可以运行多个作业,每个作业将对文件执行一些操作并输出到另一个文件。在这些操作过程中,我需要将遇到的任何错误记录在多个日志文件中,每个作业一个 我知道我可以使用Serilog在代码中设置不同的接收器(即多个日志文件),因此我将它注入到我的服务中以执行操作,然后在那里进行日志记录。这个服务被注入我的API控制器,它只调用服务方法 这里我不确定的是如何处理从控制器内部调用Serilog日志记录方法,因为我需要在那里进行一些日志记录,同时仍然使用我在服务中使用的相同接收器。例如,对

在我的应用程序中,用户可以运行多个作业,每个作业将对文件执行一些操作并输出到另一个文件。在这些操作过程中,我需要将遇到的任何错误记录在多个日志文件中,每个作业一个

我知道我可以使用Serilog在代码中设置不同的接收器(即多个日志文件),因此我将它注入到我的服务中以执行操作,然后在那里进行日志记录。这个服务被注入我的API控制器,它只调用服务方法

这里我不确定的是如何处理从控制器内部调用Serilog日志记录方法,因为我需要在那里进行一些日志记录,同时仍然使用我在服务中使用的相同接收器。例如,对于一个作业,将有一个日志文件,该文件在作业期间在控制器和服务之间共享

如果我公开一个接口方法,比如

public void SetLogFile(string fileName)
{
    Log.Logger = new LoggerConfiguration()
        .WriteTo.RollingFile(pathFormat: _hostingEnvironment.ContentRootPath + "/" + fileName + ".log",
                             outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {SourceContext} [{Level}] {Message}{NewLine}{Exception}")
        .CreateLogger();
}
在我的服务中,我将我的配置称为控制器或其他任何地方,如果我也在控制器中插入ILogger,那么配置在控制器中是全局的且可用的吗


任何提示都将不胜感激

你如何定义工作?请求的持续时间?或者一些独立于请求/http上下文的任意后台任务?Hi Tseng,在我的例子中,它是一组从Web API控制器端点调用的异步任务。如何定义作业?请求的持续时间?或者一些独立于请求/http上下文的任意后台任务?Hi Tseng,在我的例子中,它将是一组从Web API控制器端点调用的异步任务。