Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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#_.net_Logging_Console Application_Serilog - Fatal编程技术网

C# Serilog在记录时创建新文件

C# Serilog在记录时创建新文件,c#,.net,logging,console-application,serilog,C#,.net,Logging,Console Application,Serilog,我正在尝试使用Serilog登录控制台应用程序上的多个文件。我使用以下代码初始化了记录器: public static IServiceCollection AddSerilog( this IServiceCollection services) { var loggers = new List<string>(){"logger1", "logger2", "logge

我正在尝试使用Serilog登录控制台应用程序上的多个文件。我使用以下代码初始化了记录器:

public static IServiceCollection AddSerilog(
           this IServiceCollection services)
        {
            var loggers = new List<string>(){"logger1", "logger2", "logger3"};
            Log.Logger = new LoggerConfiguration()
                .WriteTo.Map("type", string.Empty, (type, wt) =>
                {
                    foreach (var logger in loggers )
                    {
                        if (type.Equals(logger))
                        {
                            wt.File($"./logs/{logger}_log.txt", rollOnFileSizeLimit: true, fileSizeLimitBytes: 1000000, retainedFileCountLimit: 1);
                        }
                    }

                    if (String.IsNullOrEmpty(type))
                        {
                            foreach (var logger in loggers)
                            {
                                wt.File($"./logs/{logger}_log.txt", rollOnFileSizeLimit: true, fileSizeLimitBytes: 1000000, retainedFileCountLimit: 1);
                            }
                        }
                })
                .Enrich.FromLogContext()
                .CreateLogger();

            return services.AddSingleton<ILogger, Logger>();
        }
我在Main.cs类中:

private static IServiceCollection ConfigureServices()
        {
            IServiceCollection services = new ServiceCollection();

            services.AddSerilog();
            
            return services;
        }
我想做的是在调用LogWrite方法时记录到特定的日志文件:

logger.LogWrite(“记录到logger1”,LogType.Info,“logger1”)->此日志记录到logger1

logger.LogWrite(“登录到logger2”,LogType.Info,“logger2”)->此日志记录到logger2

logger.LogWrite(“登录到logger3”,LogType.Info,“logger3”)->此日志记录到logger3

如果第三个参数是string.Empty,我想记录到每个日志:

logger.LogWrite(“记录到每个记录器”,LogType.Info,string.Empty)->此日志记录到logger1、logger2、logger3

它没有正确地记录,并且它为每个记录器记录到两个单独的文件中。若我使用第三个参数(即string.empty)调用方法,它将记录到一个单独的文件中。e、 g:

logger1\u log\u 001.txt

如果我调用一个方法,将第三个参数记录到特定的记录器,它将记录到另一个文件:

logger1_log.txt

我不明白为什么要为每个日志创建两个单独的日志文件。有没有办法让它以我想要的方式记录下来

private static IServiceCollection ConfigureServices()
        {
            IServiceCollection services = new ServiceCollection();

            services.AddSerilog();
            
            return services;
        }