关于log4net运行时修改连接串的问题

        由于log4net本身没有提供设置数据库连接串的方法,因此当需要运行时设置连接串就比较困难,我在网上找了很久,发现也有人提出过类似的问题,但是却没有找到解决方案。于是查看log4net的代码,找到了一个以XmlElement作为参数的配置方法:log4net.Config.XmlConfigurator.Configure(XmlElement element)。想了一下,其实可以运行时加载log4net的配置,然后修改ConnenctionString,再调用此方法进行配置即可。

        以下是log4net的部分配置:

<configuration>

...
 
 <log4net>
    <logger name="NHibernate" additivity="false">
      <level value="OFF"/>
      <appender-ref ref="AdoNetAppender"/>
    </logger>
    <logger name="NHibernate.SQL" additivity="false">
      <level value="OFF"/>
      <appender-ref ref="AdoNetAppender"/>
    </logger>
    <root>
      <level value="ALL"/>
      <appender-ref ref="AdoNetAppender"/>
    </root>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <param name="BufferSize" value="1"/>

      <param name="ConnectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <param name="ConnectionString" value=""/><!--在代码中设置-->
  
    ...
  
  </log4net>

...

</configuration>

        以下是设置连接串的代码:


...

                //解析连接串
                ConnectionString = "数据库连接串";
                
                //log4net配置连接串
                XmlNode log4NetconnNode = xmlDoc.SelectSingleNode("/configuration/log4net/appender/param[@name=\"ConnectionString\"] ");
                log4NetconnNode.Attributes["value"].Value = ConnectionString;
                log4net.Config.XmlConfigurator.Configure(xmlDoc.SelectSingleNode("/configuration/log4net") as XmlElement);
    
...
 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值