Log4NET AdoNetAppender连接字符串参考
我想使用Log4NET登录我的数据库并按照一些教程我看到我必须为DAO appender配置连接字符串。
我的web.config中已经有一个用于数据库连接的连接字符串,所以我想知道我是否可以引用它而不是设置一个新的连接字符串。
我通常会更改连接字符串以从dev DB切换到生产DB,因此共享相同的连接参数可能非常有用。
编辑:自发布以来,log4net现在支持在配置中指定连接字符串名称 。 来自https://issues.apache.org/jira/browse/LOG4NET-88 –
这会向AdoNetAppender类添加一个新的“connectionStringName”属性(和相应的ConnectionStringName)属性。 这是对App.config或Web.config文件的
部分中的连接字符串的引用。
这个答案有一个例子。
如果您没有在
部分中定义连接字符串,则可以使用此类在运行时设置连接字符串:
在配置log4net之后立即使用连接字符串调用SetConnectionString
。
但是,我会注意到以下几点:
Log4net数据库追加器不喜欢在没有连接字符串的情况下创建,并抛出(内部)错误 – 并且在unit testing期间,我看到在给定假连接字符串时测试需要超过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() .SingleOrDefault(); if (appender == null) { throw new InvalidOperationException ("Can't locate a database appender"); } appender.ConnectionString = connectionString; appender.ActivateOptions(); } }