Я начинаю новый проект с 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);
}
Так как я использовал несколько журналов, appenders ETD и хотел отключить NHibernate входа (я использую NHibernate 4 как ORM) и т. Д. Мне было удобнее делать конфигурацию на C#, чем в XML.
Можно ли подключить это с помощью ServiceStack или лучше использовать Log4Net напрямую?