在log4net中,BasicConfigurator
类是用于配置基本日志记录器的,而Configure
是此类的方法。
BasicConfigurator.Configure(_repository, appender)
和BasicConfigurator.Configure(appender)
之间的主要区别在于它们接受的参数类型。
BasicConfigurator.Configure(_repository, appender)
:这个方法通常在log4net库的某些版本中使用,其中第一个参数是一个ILoggerRepository
对象,它是log4net中日志记录器存储库的实例,用于存储和管理日志记录器。第二个参数是一个Appender
对象,它是用于配置日志如何被记录的组件。BasicConfigurator.Configure(appender)
:这个方法是较新的log4net版本中的推荐使用的方法。它只有一个参数,即一个Appender
对象。在这种情况下,Appender
对象应该包含有关如何配置和附加日志记录器所需的所有信息。
在大多数情况下,你应该使用 BasicConfigurator.Configure(appender)
,因为它是一个更简洁的方法,可以在没有显式创建 ILoggerRepository
实例的情况下进行配置。如果你的应用程序需要使用特定的 ILoggerRepository
实现(例如,如果你需要将日志记录到数据库或远程位置),则可以使用 BasicConfigurator.Configure(_repository, appender)
。
// 单个日志文件动态创建
public static class Logger
{
public static void SetLogFile(string para)
{
RollingFileAppender appender = new RollingFileAppender();
appender.Name = "RollingLogFileAppender";
appender.File = AppDomain.CurrentDomain.BaseDirectory + $"Logs\\{para}.log";
appender.DatePattern = "-yyyyMMdd".log"";
appender.RollingStyle = RollingFileAppender.RollingMode.Composite;
appender.AppendToFile = true;
appender.MaxSizeRollBackups = 5;
appender.MaximumFileSize = "50MB";
appender.StaticLogFileName = true;
PatternLayout layout = new PatternLayout();
layout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
layout.ActivateOptions();
appender.Layout = layout;
appender.ActivateOptions();
BasicConfigurator.Configure(appender);
}
public static void InitLogger(string para)
{
ILog fileLogger = LogManager.GetLogger("Logger");
SetLogFile(para);
}
}
//动态的创建日志实例,将根据不同名称创建多个日志文件
public static ILog SetLogFile(string portName)
{
RollingFileAppender appender = new RollingFileAppender();
appender.Name = $"RollingLogFileAppender_{portName}";
appender.File = AppDomain.CurrentDomain.BaseDirectory + $"Logs\\HVPS1pt2--{DateTime.Now.ToString("yyyyMMdd")}--{portName}.log";
appender.DatePattern = "-yyyyMMdd".log"";
appender.RollingStyle = RollingFileAppender.RollingMode.Composite;
appender.AppendToFile = true;// 如果文件存在,新的日志将追加到文件中,而不是覆盖文件
appender.MaxSizeRollBackups = 5;
appender.MaximumFileSize = "500MB";
appender.StaticLogFileName = true;
PatternLayout layout = new PatternLayout();
layout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
appender.Layout = layout;// 设置日志的格式
var filter = new LevelMatchFilter { LevelToMatch = Level.All };
filter.ActivateOptions();
appender.AddFilter(filter);
appender.ActivateOptions();// 激活选项
//创建实例,第一个参数是一个ILoggerRepository对象,它是log4net中日志记录器存储库的实例,必须有此实例才能动态创建多个日志文件
var repositoryName = $"{portName}.Repository";
ILoggerRepository _repository = LoggerManager.CreateRepository(repositoryName);
BasicConfigurator.Configure(_repository, appender);
return LogManager.GetLogger(_repository.Name, portName);
}
public static void InitLogger(string para)
{
ILog fileLogger = SetLogFile("para");
}