我想使用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