【问题标题】:Log4Net not generating log fileLog4Net 不生成日志文件
【发布时间】:2017-03-29 10:50:05
【问题描述】:

我有ASP.Net WebAPI 项目并使用Log4Net API。

 protected void LogException(Exception ex)
    {
        var msgParams = new Dictionary<string, string>
                {
                    { "Message", ex.Message },
                    { "StackTrace", ex.StackTrace },
                };

        _logger.Info(JsonConvert.SerializeObject(msgParams));
    }

XML 配置

<?xml version="1.0" encoding="utf-8" ?> <log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">

    <file value="App.log" />

    <appendToFile value="true" />

    <maximumFileSize value="50KB" />
    <maxSizeRollBackups value="2" />

    <encoding value="utf-8" />

    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %level %thread %logger - %message%newline" />
    </layout>

</appender>

<root>
    <level value="DEBUG" />
    <appender-ref ref="RollingFile" />
</root>

但是,当任何异常发生并且 LogException() 之上被命中时,我没有收到任何异常,也没有在我的目录中看到任何 App.Log 文件。 p>

我在这里缺少什么? 任何帮助/建议都非常感谢。

【问题讨论】:

  • 如果您使用像 debugbiew 这样的运行时跟踪工具,您可能会发现 apppool 帐户没有创建文件的权限。您应该将日志配置到应用程序根目录之外的另一个位置。
  • @tomredfern,我以管理员身份运行
  • 只是为了确认您在运行时使用 XmlConfigurator 或程序集属性配置 log4net?
  • @stuartd,作为程序集属性
  • 尝试在命名空间声明之前添加行 [assembly: log4net.Config.XmlConfigurator(Watch = true)]

标签: c# asp.net-web-api log4net


【解决方案1】:

问题大概出在位置:

<file value="App.log" />

这将记录相对于您的网络服务器目录,而不是您的代码/可执行文件的位置。设置完整路径来测试它,日志位置必须对运行您的应用程序的用户是可写的。

【讨论】:

  • 我查过了。没有这样的
  • 运行请求的 IIS 进程应该是可写的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-22
  • 2015-03-12
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多