log4net错误未登录umbraco日志文件

时间:2017-11-06 10:56:35

标签: debugging umbraco log4net

我使用的是Umbraco 7.5.12。

我有一个应该记录错误的类,但这些条目不会出现在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类在一个单独的项目中,无论如何都在起始项目中引用,上面的日志文件设置显然在启动项目中,但它不应该是问题吗?

我检查了启用log4net的设置:

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

IsDebugEnabled为假。这可能是一个问题吗?

2 个答案:

答案 0 :(得分:1)

我通常使用Loghelper

中的Umbraco.Core.Logging
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

答案 1 :(得分:1)

// Add the JSP view resolver. @Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.jsp(); // OR registry.jsp("/",".jsp"); } //... snip @Override public void addViewControllers(ViewControllerRegistry registry) { registry .addViewController("/yourpath") .setViewName("yourtemplate"); } 可能会阻止IsDebugEnabled个邮件发送日志文件(在Umbraco核心中可能存在很多这些邮件)。如果LogHelper.Debug为真,则可能显示错误消息。

我知道建议使用IsErrorEnabled,但我通常在登录时使用静态Umbraco实例:

ILogger