如何让log4net解密来自web.config的加密连接字符串?

qua*_*els 3 asp.net log4net web-config

我正在处理的Web应用程序使用log4net进行日志记录.项目的要求是连接字符串应加密.如何告诉log4net使用解密值?

例如:

 <log4net>
    <root>
      <level value="Debug"/>
      <appender-ref ref="AdoNetAppender"/>
    </root>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="1"/>
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <connectionString value="encryptedconnectionstringhere=="/>
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

qua*_*els 6

在实现drumboog的答案时,由于无限递归的方法调用,我遇到了stackoverflow异常.这基本上就是我最终使用的内容.

public class CustomAdoNetAppender : AdoNetAppender
{
    private string _connectionString;
    protected override string ResolveConnectionString(out string connectionStringContext)
    {
        if(string.IsNullOrEmpty(_connectionString))
        {
            var decrypt = new MyDecyptionLib();
            _connectionString = decrypt.MyDecryptionFunction(ConfigurationManager.AppSettings["Connection"]);
        }

        connectionStringContext = _connectionString;
        return connectionStringContext;
    }

}
Run Code Online (Sandbox Code Playgroud)

...并在log4net配置部分

<appender name="AdoNetAppender" type="My.Name.Space.To.CustomAdoNetAppender">
Run Code Online (Sandbox Code Playgroud)