繁体   English   中英

Log4NET AdoNetAppender连接字符串参考

[英]Log4NET AdoNetAppender connection string reference

我想使用Log4NET登录到我的数据库,并遵循一些教程,我发现我必须为DAO附加程序配置一个连接字符串。

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

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

编辑:自从发布以来,log4net现在支持在配置中指定连接字符串名称 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();
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM