Log4Net在Dev机器上运行,在部署到共享主机时失败(使用相同的db/connstring)

jln*_*thy 4 asp.net-mvc log4net sql-server-2005 adonetappender

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

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

这是在SQL Server 2005上运行的.nethost是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" />
Run Code Online (Sandbox Code Playgroud)

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

Ron*_*erg 7

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

您可能想要尝试的是启用log4net的内部日志记录.您可以通过在以下appSettings部分添加以下内容来执行此操作:

<add key="log4net.Internal.Debug" value="true" />
Run Code Online (Sandbox Code Playgroud)

这会将属性设置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>
Run Code Online (Sandbox Code Playgroud)

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