Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
C# Serilog不创建日志文件_C#_Asp.net Core_Serilog - Fatal编程技术网

C# Serilog不创建日志文件

C# Serilog不创建日志文件,c#,asp.net-core,serilog,C#,Asp.net Core,Serilog,Serilog不会创建日志文件——因此(我认为)不会记录任何内容。 由于目标应该是一个微服务,我使用的是CQRS模式 这是我的Startup.cs private readonly ISession session; private readonly ILogger logger; public Startup(IConfiguration configuration) { Configuration = configuration; var baseDirectory = Di

Serilog不会创建日志文件——因此(我认为)不会记录任何内容。 由于目标应该是一个微服务,我使用的是CQRS模式

这是我的Startup.cs

private readonly ISession session;
private readonly ILogger logger;

public Startup(IConfiguration configuration)
{
  Configuration = configuration;

    var baseDirectory = Directory.GetDirectoryRoot(AppDomain.CurrentDomain.BaseDirectory);

    Log.Logger = new LoggerConfiguration()
                    .WriteTo
                    .Logger(lc => lc.Filter
                                    .ByIncludingOnly(e => e.Level == LogEventLevel.Information || e.Level == LogEventLevel.Debug)
                                    .WriteTo.RollingFile(Path.Combine(baseDirectory, "/Logs/info.log")))
                    .WriteTo
                    .Logger(lc => lc.Filter
                                    .ByIncludingOnly(e => e.Level == LogEventLevel.Error)
                                    .WriteTo.RollingFile(Path.Combine(baseDirectory, "/Logs/error.log")))

}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
  if (env.IsDevelopment())
  {
    app.UseDeveloperExceptionPage();
  }

   loggerFactory.AddSerilog();
   ...//To shorten this example in Stackoverflow, I've excluded the standard code. But in reality they are of course there
}
这是我的类,DI将在其中注入记录器:

public MaterialCommandHandler(ISession session, ILogger<MaterialCommandHandler> logger)
{
  this.session = session;
  this.logger = logger;
}

有人知道为什么不创建文件吗?而且什么都不会记录

您在日志构造的末尾缺少了
.CreateLogger()
语句,但我认为真正的问题是您的
路径。Combine
语句可能会导致无效路径或您不期望的路径<代码>路径。组合有一些您可能不知道的恼人行为。考虑以下事项:

Path.Combine(@"C:\Temp", @"Logs\mylog.txt"); // C:\Temp\Logs\mylog.txt
Path.Combine(@"C:\Temp\", @"Logs\mylog.txt"); // C:\Temp\Logs\mylog.txt
Path.Combine(@"C:\Temp\", @"\Logs\mylog.txt"); // \Logs\mylog.txt
Path.Combine(@"C:\Temp", @"\Logs\mylog.txt"); // \Logs\mylog.txt

系统上是否存在
/Logs
?进程是否以具有
/Logs
写入权限的用户身份运行?是否有错误?@PeteGarafano是的,系统上存在该文件夹。它是C:/Logs/-我是系统管理员,因此不应该存在任何访问/授权问题。不幸的是,这里也没有错误——这就是为什么我想知道为什么它不工作的原因。您显示的代码没有编译。我看不到对
CreateLogger()
的调用。另外,为了测试auth\access问题,可能值得为每个人提供对日志文件夹(仅)的修改权限,仅用于测试。@CalC哦,很抱歉,我忘了在这里复制它-当然,我的代码中有它。您是否尝试过启用自日志记录器,如文档中所述?我已经检查过了,是的,问题是路径。组合..非常感谢
Path.Combine(@"C:\Temp", @"Logs\mylog.txt"); // C:\Temp\Logs\mylog.txt
Path.Combine(@"C:\Temp\", @"Logs\mylog.txt"); // C:\Temp\Logs\mylog.txt
Path.Combine(@"C:\Temp\", @"\Logs\mylog.txt"); // \Logs\mylog.txt
Path.Combine(@"C:\Temp", @"\Logs\mylog.txt"); // \Logs\mylog.txt