Можете ли вы указать мне на какой-то учебник или примеры, как я могу зарегистрировать все не обработанные исключения, которые происходят в моем веб-приложении mvc, используя log4net. Спасибо вам
Log4net регистрирует все необработанные ошибки приложения
Ответ 1
Я вставляю ниже код, который я использую для своего global.asax, который, кажется, удовлетворяет меня на данный момент.. Я получаю все необработанные исключения в моих файлах журнала log4net.
public class MvcApplication : System.Web.HttpApplication
{
private static readonly ILog log = LogManager.GetLogger(typeof(MvcApplication));
void Application_Error(Object sender, EventArgs e)
{
Exception ex = Server.GetLastError().GetBaseException();
log.Error("App_Error", ex);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
log4net.Config.XmlConfigurator.Configure();
}
}
Ответ 2
Для приложений ASP.NET вам нравится использовать событие System.Web.HttpApplication.Error
, которое помещается в файл Global.asax
.
protected void Application_Error(Object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
// Stop error from displaying on the client browser
Context.ClearError();
logger.Fatal(ex.ToString);
}
Ответ 3
Без лишних здесь вы идете.
try
{
NotImplementedException nie = new NotImplementedException();
throw nie;
}
catch (Exception e)
{
Log.Fatal(e);
}
Предполагая, что вы используете .net 3.5, вы можете использовать методы расширения и расширять System.Exception и добавлять метод Log (log4net.ILog log), а затем, где бы вы ни выбрали исключение в своем приложении, при условии, что вы настроили Правильно регистрируйте экземпляр, тогда вы легко это сделаете. Ваш класс расширения может вырасти совсем немного, с различными перегрузками для Debug, Info, Warn, Error и Fatal и т.д.
Ответ 4
Вам может быть интересно узнать, что Aspect Oriented Programming (AOP).
Мы выполнили это с помощью Опубликовать острый (только - мы не использовали log4net, а пользовательский трассировщик).
Просто проверьте сначала, если log4net не имеет ничего для этого "готового". Я не уверен в этом.
Ответ 5
В log4net встроенной поддержки нет. Вы должны реализовать событие Application_Error в Global.asax и вызвать там loglognet log4net. Событие будет инициировано для всех необработанных событий в вашем приложении.