servicestack ServiceStack 4.5以编程方式配置log4net
我正在使用ServiceStack 4.5启动一个新项目。有没有办法通过编程方式配置log4net?在我找到的文档中servicestack ServiceStack 4.5以编程方式配置log4net,servicestack,log4net,servicestack,Log4net,我正在使用ServiceStack 4.5启动一个新项目。有没有办法通过编程方式配置log4net?在我找到的文档中 LogManager.LogFactory = new Log4NetFactory(configureLog4Net: true); 我将其添加到AppHost类的构造函数中。不过,这似乎是假设您将配置放在App.config文件中(我在windows服务上进行自托管) 在其他一些项目中,我编写了一个单例,然后使用Log4Net API进行配置: private st
LogManager.LogFactory = new Log4NetFactory(configureLog4Net: true);
我将其添加到AppHost类的构造函数中。不过,这似乎是假设您将配置放在App.config文件中(我在windows服务上进行自托管)
在其他一些项目中,我编写了一个单例,然后使用Log4Net API进行配置:
private static void CreateFileAppender(ref Logger bedInventoryLogger, string logFilePath, Level logLevel, int maxFileSizeInMb, bool filterNh)
{
var filePatternLayout = new PatternLayout
{
ConversionPattern = "%date; [%thread]; %-5level; %logger; [%type{1}.%method]; - %message%newline"
};
filePatternLayout.ActivateOptions();
var bediLogFileAppender = new RollingFileAppender
{
File = logFilePath,
AppendToFile = true,
MaximumFileSize = $"{maxFileSizeInMb}MB",
MaxSizeRollBackups = 5,
RollingStyle = RollingFileAppender.RollingMode.Size,
LockingModel = new FileAppender.MinimalLock(),
Layout = filePatternLayout,
StaticLogFileName = true,
Threshold = logLevel
};
if (filterNh)
{
bediLogFileAppender.AddFilter(new LoggerMatchFilter
{
LoggerToMatch = "NHibernate",
AcceptOnMatch = false
});
bediLogFileAppender.AddFilter(new LoggerMatchFilter
{
LoggerToMatch = "NHibernate.SQL",
AcceptOnMatch = false
});
bediLogFileAppender.AddFilter(new LoggerMatchFilter
{
LoggerToMatch = "FluentNHibernate",
AcceptOnMatch = false
});
}
bediLogFileAppender.ActivateOptions();
bedInventoryLogger.AddAppender(bediLogFileAppender);
}
因为我使用了几个日志,appenders etd,并且想关闭NHibernate日志(我使用NHibernate 4作为ORM)等等。我发现用C#进行配置比用XML更方便
是否可以将其与ServiceStack挂钩,或者我最好直接使用Log4Net?默认ServiceStack Log4Net适配器不允许您注入已配置的Log4Net实例,但是适配器类很容易复制和修改,这两个类位于这两个文件中,基本上只是将调用转发到Log4Net: