Это плохая идея, я знаю, но... Я хочу программно настроить log4net с нуля без файла конфигурации. Я работаю над простым протоколирующим приложением для меня и моей команды, чтобы использовать кучу относительно небольших ведомственных приложений, за которые мы несем ответственность. Я хочу, чтобы все они регистрировались в одной базе данных. Приложение регистрации является всего лишь оберткой вокруг log4net с предварительно сконфигурированным AdoNetAppender.
Все приложения - это ClickOnce, которые представляют собой небольшую проблему при развертывании файла конфигурации. Если файл конфигурации был частью основного проекта, я мог бы установить его свойства для развертывания с помощью сборки. Но это часть связанного приложения, поэтому у меня нет возможности развернуть его с основным приложением. (Если это не так, кто-нибудь, пожалуйста, дайте мне знать).
Вероятно, потому что это "плохая идея", похоже, не существует много примеров кода для программной настройки log4net с нуля. Вот что я до сих пор.
Dim apndr As New AdoNetAppender()
apndr.CommandText = "INSERT INTO LOG_ENTRY (LOG_DTM, LOG_LEVEL, LOGGER, MESSAGE, PROGRAM, USER_ID, MACHINE, EXCEPTION) VALUES (@log_date, @log_level, @logger, @message, @program, @user, @machine, @exception)"
apndr.ConnectionString = connectionString
apndr.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
apndr.CommandType = CommandType.Text
Dim logDate As New AdoNetAppenderParameter()
logDate.ParameterName = "@log_date"
logDate.DbType = DbType.DateTime
logDate.Layout = New RawTimeStampLayout()
apndr.AddParameter(logDate)
Dim logLevel As New AdoNetAppenderParameter()
logLevel.ParameterName = "@log_level"
'And so forth...
После настройки всех параметров для apndr
, я сначала попробовал это...
Dim hier As Hierarchy = DirectCast(LogManager.GetRepository(), Hierarchy)
hier.Root.AddAppender(apndr)
Это не сработало. Затем, как выстрел в темноте, я попробовал это вместо этого.
BasicConfigurator.Configure(apndr)
Это тоже не сработало. Есть ли у кого-нибудь хорошие рекомендации о том, как настроить программный код log4net с нуля без файла конфигурации?