1

我在使用 log4net dll 记录到文本文件时遇到问题。

我在 windows server 2008 r2 标准 (64) 上使用 vs 2012 express。我有以下步骤:

  1. 打开一个新的 asp.net 网页表单
  2. 通过 nuget 管理器安装 log4net。
  3. 在 global.asax 文件中,我在 Application_Start 中有这个:

    log4net.Config.XmlConfigurator.Configure ();
    
  4. 在网络配置中,我已将这一行添加到 configSections 节点:

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

  5. 在网络配置中,我添加了此部分:

    <log4net debug="true">
     <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
     <file value="c:\webSite\extraDownloadServerResources\Logs\ALU\log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Composite"/>
    <datePattern value="yyyyMMdd" />
    <maxSizeRollBackups value="5" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%n%-5p %d %5rms %-22.22c{1} %-18.18M %n - %m%n" />
    </layout>
    </appender>
    <root>
     <level value="DEBUG" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
    </log4net>
    
  6. 在启动页面中,我获取了记录器的实例:

    private static readonly ILog log = LogManager.GetLogger ( System.Reflection.MethodBase.GetCurrentMethod ().DeclaringType );
    
  7. Page_Load我写了这一行:

    log.Debug(“测试”);

  8. 我已将具有读/写权限的 Dedualt 应用程序池用户添加到 log.txt 文件安全性。

我的日志文件中没有任何内容。为了测试我所做的步骤,我创建了一个新的空网站并一一执行这些步骤。唉(我喜欢这个词)这次日志已经写入文件了。

任何人都可以指出一个可能的解决方案吗?

4

2 回答 2

2

要调试 log4net 配置问题,您应该启用 log4net 内部调试

里面appSettings添加log4net.Internal.Debug键如下:

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

这将使 log4net 能够将所有消息输出到控制台和Trace。要将所有诊断消息转发到文件,您可以添加跟踪侦听器:

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

这些片段直接取自log4net 常见问题解答,此处仅供快速参考。

这至少会让您了解正在发生的事情,因为您会收到错误消息。

于 2013-04-11T12:57:57.277 回答
0

我设法解决了我的问题。

我已经下载了一个工具来监控所有国际空间站的交通。在监控流量时,我看到用户名既不是 defaultAppPool 也不是 AppPoolName。它是ASP.NET v4.0。在我授予权限并重新启动所有内容后,我终于在文件中看到了一些日志......

于 2013-04-14T08:53:03.127 回答