4

我在本地机器上配置了 log4net 并且工作正常,但是当我部署到我的主机(godaddy)时,它会静默失败。我在我的开发机器和主机上使用相同的数据库/配置文件。我的 log4net 引用设置为复制本地,log4net.dll、.pdb 和 .xml 存在于主机上的 bin 中。这是一个 asp.net mvc 应用程序。

编辑:不抛出异常,应用程序按预期运行(减去日志记录)

这是在 SQL Server 2005 上运行的 webhost 是 IIS 7

我的配置的重要细节是:

<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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

有人对要检查的事情有任何想法吗?

4

2 回答 2

7

根据我的经验,log4net 通常会吞下任何内部错误,只会导致日志语句不会产生任何结果。

您可能想尝试的是启用 log4net 的内部日志记录。您可以通过将以下内容添加到您的appSettings部分来做到这一点:

<add key="log4net.Internal.Debug" value="true" />

这会将属性设置LogLog.InternalDebuggingtrue。log4net 现在将记录到标准输出和错误流以及配置的跟踪侦听器。

您可以使用以下配置来捕获记录到跟踪的任何消息:

<system.diagnostics>
  <trace autoflush="false" indentsize="4">
    <listeners>
      <add name="myListener"
        type="System.Diagnostics.TextWriterTraceListener"
        initializeData="c:\TextWriterOutput.log" />
      <remove name="Default" />
    </listeners>
  </trace>
</system.diagnostics>

log4net 内部记录的所有消息都将出现在TextWriterOutput.log. 如果您SecurityException在将跟踪侦听器添加到您的配置时得到一个,那么很可能 apppool 身份没有足够的权限在指定位置创建文件(在示例中:)c:\。尝试其他位置或给予 apppool 身份足够的权限。

于 2010-08-22T20:11:22.497 回答
1

我刚刚能够通过从 SVN 存储库http://svn.apache.org/viewvc/logging/log4net/trunk/下载和使用最新版本的 log4net(修订版 1072765)来解决这个问题

显然这个问题很久以前就已经解决了,但谁知道 log4net 1.2.11 什么时候发布。

于 2011-02-20T22:38:14.093 回答