Log4NET AdoNetAppender连接字符串引用



我想使用Log4NET登录到我的数据库,根据一些教程,我看到我必须为DAO appender配置一个连接字符串。

我的web.config中已经有一个用于DB连接的连接字符串,所以我想知道是否可以引用它,而不是设置一个新的连接字符串。

我通常会更改连接字符串以从开发数据库切换到生产数据库,因此共享相同的连接参数可能非常有用。

Edit:自从发布了这篇文章以来,log4net现在支持在配置中指定连接字符串name。从…起https://issues.apache.org/jira/browse/LOG4NET-88-

这将向AdoNetAppender类添加一个新的"connectionStringName"属性(以及相应的connectionStringName)属性。这是对App.config或Web.config文件的<ConnectionStrings>节中的连接字符串的引用。

这个答案中有一个例子。

如果在<ConnectionStrings>部分中没有定义连接字符串,那么可以在运行时使用以下类设置连接字符串:

在配置了log4net之后,使用连接字符串调用SetConnectionString

然而,我要注意的是:

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();
}
}

相关内容

  • 没有找到相关文章

最新更新