log4net 错误未登录 umbraco 日志文件

log4net errors not logging in umbraco log file

我正在使用 Umbraco 7.5.12。

我有一个 class 应该记录错误但条目没有出现在 umbraco 日志文件中。

尽管给管理员的消息发送得很好:

public class ErrorReporting
{
    private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

    public static void LogError(Exception ex, string messageIntro, string id = null)
    {
        Logger.Error(messageIntro, ex);

        Error adminErrorMessage = new Error();
        adminErrorMessage.Send(ex, id);
    }
}

日志文件的url似乎设置正确:

<file type="log4net.Util.PatternString" value="App_Data\Logs\UmbracoTraceLog.%property{log4net:HostName}.txt" />

并且 umbraco 正确地记录了它的错误。

ErrorReporting class 是在一个单独的项目中,无论如何在启动项目中引用并且上面的日志文件设置显然在启动项目中但它不应该是问题?

我检查了启用 log4net 的设置:

        bool IsErrorEnabled = Logger.IsErrorEnabled;
        bool IsFatalEnabled = Logger.IsFatalEnabled;
        bool IsDebugEnabled = Logger.IsDebugEnabled;
        bool IsInfoEnabled = Logger.IsInfoEnabled;
        bool IsWarnEnabled = Logger.IsWarnEnabled;

IsDebugEnabled 是错误的。这会成为问题吗?

我通常使用位于Umbraco.Core.Logging

Loghelper
using Umbraco.Core.Logging;

public class ErrorReporting
{
    public static void LogError(Exception ex, string messageIntro, string id = null)
    {
        LogHelper.Error(typeof(ErrorReporting), messageIntro, ex);
        Error adminErrorMessage = new Error();
        adminErrorMessage.Send(ex, id);
    }
}

可以找到一些附加信息here

IsDebugEnabled 可能是错误的,以阻止 LogHelper.Debug 消息向日志文件发送垃圾邮件(在 Umbraco 核心中可能有很多这样的消息)。如果 IsErrorEnabled 为真,您的错误消息应该会显示。

我知道推荐使用ILogger,但我一般在记录时使用静态Umbraco实例:

try
{
    throw new Exception("Test.");
}
catch (Exception e)
{
    Umbraco.Core.Logging.LogHelper.Error(this.GetType(), "Test error log.", e);
}