【问题标题】:Where does log4net write log files when debugging a web application through Visual Studio?通过 Visual Studio 调试 Web 应用程序时,log4net 在哪里写入日志文件?
【发布时间】:2014-01-17 19:52:35
【问题描述】:

我正在尝试将 log4net 日志记录添加到我正在编写的 Web 应用程序中。我在网络服务方法中得到了这个:

log4net.Config.XmlConfigurator.Configure();  
log4net.ILog log = log4net.LogManager.GetLogger(typeof(Methods));

log.Info("Some information");

这在 web.config 文件中:

<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Windows" />
    <identity impersonate="true"/>
</system.web>
<log4net>
    <appender name="LogFileAppender" type="log4net.Appender.RollFileAppender">
        <file value="log.txt" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="1MB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.SimpleLayout" />
    </appender>

    <root>
        <level value="ALL" />
        <appender-ref ref="LogFileAppender" />
    </root>
</log4net>    

当我通过 Visual Studio 2010 调试它时,我希望日志文件出现在 bin\ 目录中,但那里没有写入任何内容。该方法运行成功,没有任何异常,但是我找不到日志文件。关于它应该出现在哪里的任何想法?

编辑 - 一些额外信息: 根据通知区域图标,ASP.Net Development Server 运行在:

C:\Users\jpope\Documents\Visual Studio 2010\Projects\WebApplication1\WebApplication1\

此目录和 \bin\ 子目录的权限都授予 SYSTEM、我和管理员完全控制权,其他人没有任何访问权限。日志文件不在上面显示的目录或 \bin\ 子目录中。

【问题讨论】:

    标签: visual-studio-2010 web-applications log4net


    【解决方案1】:

    如果您愿意涉足一些低级的东西,看看Process Monitor 认为网络服务器进程正在尝试写入的内容可能会很有趣。至少这会比翻阅 log4net 文档更有趣。

    【讨论】:

    • 进程监视器中没有提到该文件,所以我猜配置是错误的。
    【解决方案2】:

    也许你应该设置 asp.net 用户对你的 web 目录有写权限。

    【讨论】:

    • @x16man: 是运行调试网络服务的用户吗?
    • @x16man:我查看了那个 bin 目录,根据 windows 只有 SYSTEM,我和管理员可以访问它,我们都有完全的控制权。调试 Web 服务器是否从不同的目录运行?
    • 你的日志文件会被创建在webservice的文件夹中,而不是bin文件夹中,你可以。您需要检查网络服务的文件夹。如果 aspnet 用户拥有完全控制权。
    • @x16man:我检查了应用程序文件夹,ASP.NET 用户根本无法控制该目录,所以我不确定它是否以该用户身份运行。
    • @x16man:经过一番调查,事实证明 ASP.Net 开发服务器在您当前的用户帐户下运行(如果您是管理员,则包括管理员权限:msdn.microsoft.com/en-us/library/58wxa9w5(v=vs.80).aspx
    【解决方案3】:

    原来是配置问题。切换到 FileAppender 而不是 RollFileAppender 可以正常工作。现在我需要找出RollFileAppender 配置有什么问题...

    编辑:这是RollingFileAppender,而不是RollFileAppender

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多