1

我在本地开发了一个 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" />

这是完美的工作(数据库条目出现在日志表中)。

现在我想登录到远程 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 db 实例)。

在调试应用程序时,我没有看到任何由 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"));
        }
    }

天蓝色数据库实例上的数据库是本地数据库的精确副本(相同的创建脚本)。

但是远程数据库中什么也没有出现。我究竟做错了什么?我怎样才能找出问题所在?

非常感谢

4

1 回答 1

2

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

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

或者

<configuration>
...

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

...
</configuration>
于 2013-06-14T10:17:34.583 回答