C# Serilog在记录时创建新文件
我正在尝试使用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
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;
}