Pergunta

Fiquei me perguntando se há um caminho em Umbraco para registrar erros que obtemos quando não carrega o XSLT ou os controlos de usuário. Geralmente mostra uma caixa vermelha dizendo que não poderia carregar o controle e outras coisas. Existe uma maneira de registrar corretamente isso?

Desde já, obrigado.

Foi útil?

Solução

Primeiro, ele não é realmente suportado ... quando ocorrem erros, ele produz html e grava no log de rastreamento do ASP.NET.

Aqui está como eu abordaria isso. A maioria das minhas instalações de Umbraco usa Elmah para obter o log de exceção e o log4net para o log de aplicativos. Isso deve fornecer algum erro na saída.

using System;
using System.Linq;
using System.Web;

public class MacroLogging : IHttpModule {

    public void Init(HttpApplication context) {
        context.LogRequest += ContextLogRequest;
    }

    static void ContextLogRequest(object source, EventArgs e) {
        var app = (HttpApplication)source;
        var context = app.Context;
        context.Trace.TraceFinished += TraceFinished;
    }

    static void TraceFinished(object sender, TraceContextEventArgs e) {
        var records = e.TraceRecords.Cast<TraceContextRecord>();
        var categoryTypes = new[] {"Macro", "macro", "umbracoMacro"};
        var traceOutput = records.Where(p => categoryTypes.Contains(p.Category) && p.IsWarning)));
        foreach (var entry in traceOutput) {
            //Your Output entry.Message
        }
    }

    public void Dispose() {}

}

Basta adicionar o módulo ao seu web.config. Não testei, pois é 1 da manhã :) Mas o conceito geral deve funcionar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top