Log4Net在本地工作但不在远程Azure DB上工作

时间:2013-06-14 09:02:07

标签: asp.net azure log4net castle-windsor

我在本地开发ASP.NET MVC应用程序并使用Log4Net使用以下连接字符串(log4net.config)在本地数据库上记录消息:

<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="Data Source=.\;Initial Catalog=MyDatabase;Integrated Security=True" />

这非常有效(数据库条目出现在Log表中)。

现在我想登录到远程azure数据库服务器,所以我只是将连接字符串更改为以下内容:

<connectionString value="Data Source=mydb.database.windows.net,1433;Initial Catalog=MyDatabase;User ID=username@mydb;Password=mypassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" />

我在防火墙中插入了我的IP地址(作为证据,我可以通过我的机器上的SQL Studio连接到azure数据库实例)。

调试应用程序时,我没有看到log4net引起的任何异常。

我使用castle-windsor在需要的地方注入ILogger,这是我的安装程序:

public class LoggerInstaller : IWindsorInstaller
    {
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            container.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("Configuration\\log4net.config"));
        }
    }

azure数据库实例上的数据库是本地数据库的完全副本(相同的创建脚本)。

但远程数据库中没有任何内容。我究竟做错了什么?我该如何找出问题?

非常感谢

1 个答案:

答案 0 :(得分:2)

如果失败,Log4net将永远不会抛出异常。它旨在不与您的应用程序进行交互。找到lognet未记录原因的最快方法是启用内部lo​​g4net日志记录:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

OR

<configuration>
...

<system.diagnostics>
    <trace autoflush="true">
        <listeners>
            <add 
                name="textWriterTraceListener" 
                type="System.Diagnostics.TextWriterTraceListener" 
                initializeData="C:\tmp\log4net.txt" />
        </listeners>
    </trace>
</system.diagnostics>

...
</configuration>