1
我正在使用ServiceStack 4.5啓動一個新項目。有沒有辦法通過編程來配置log4net?在本文檔中,我發現ServiceStack 4.5以編程方式配置log4net
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);
}
自從我用了幾個日誌,附加目的地ETD,想關閉NHibernate的記錄(我使用NHibernate 4作爲ORM)等等。我發現在C#中配置比在XML中更方便。
是否有可能將它與ServiceStack掛鉤,或者我是否更好地直接使用Log4Net?