我想使用Log4NET登錄到我的數據庫,並遵循一些教程,我看到我必須爲DAO appender配置一個連接字符串。Log4NET AdoNetAppender連接字符串參考
我已經有一個連接字符串在我的web.config數據庫連接,所以我想知道如果我可以參考,而不是設置一個新的。
我通常會更改連接字符串以從開發數據庫切換到生產數據庫,因此共享相同的連接參數可能非常有用。
我想使用Log4NET登錄到我的數據庫,並遵循一些教程,我看到我必須爲DAO appender配置一個連接字符串。Log4NET AdoNetAppender連接字符串參考
我已經有一個連接字符串在我的web.config數據庫連接,所以我想知道如果我可以參考,而不是設置一個新的。
我通常會更改連接字符串以從開發數據庫切換到生產數據庫,因此共享相同的連接參數可能非常有用。
編輯:自發布以來,log4net現在支持在配置中指定連接字符串名稱。從https://issues.apache.org/jira/browse/LOG4NET-88 -
這會爲AdoNetAppender類添加一個新的「connectionStringName」屬性(和相應的ConnectionStringName)屬性。這是對App.config或Web.config文件的
<ConnectionStrings>
部分中的連接字符串的引用。
有一個例子this answer。
如果你沒有在<ConnectionStrings>
節定義,那麼你可以使用這個類在運行時設置連接字符串連接字符串:
您調用SetConnectionString
與你配置的log4net剛過連接字符串。
不過,也有幾件事情我想指出:
log4net的數據庫追加程序不喜歡沒有一個連接字符串創建,並拋出一個(內部)錯誤 - 和單元測試過程中,我已經給出假連接字符串時,看到的測試需要10秒以上。
public static class LogConfigurator
{
public static void SetConnectionString(string connectionString)
{
Hierarchy logHierarchy = log4net.LogManager.GetRepository() as Hierarchy;
if (logHierarchy == null)
{
throw new InvalidOperationException
("Can't set connection string as hierarchy is null.");
}
var appender = logHierarchy.GetAppenders()
.OfType<AdoNetAppender>()
.SingleOrDefault();
if (appender == null)
{
throw new InvalidOperationException
("Can't locate a database appender");
}
appender.ConnectionString = connectionString;
appender.ActivateOptions();
}
}
完美,謝謝!拯救了我們的生命:) – Joe