gpt4 book ai didi

c# - Log4NET AdoNetAppender 连接字符串引用

转载 作者:太空狗 更新时间:2023-10-30 00:54:16 25 4
gpt4 key购买 nike

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

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

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

最佳答案

编辑:自发布以来,log4net 现在支持在配置中指定连接字符串 name。来自 https://issues.apache.org/jira/browse/LOG4NET-88 -

This adds a new "connectionStringName" attribute (and corresponding ConnectionStringName) property to the AdoNetAppender class. This is a reference to a connection string within the <ConnectionStrings> section of an App.config or Web.config file.

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

关于c# - Log4NET AdoNetAppender 连接字符串引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13509988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com