ASP.NET MVC使用Log4Net记录异常日志并跳转到静态页

2023-12-05 0 685

本篇体验在ASP.NET MVC 4中使用Log4Net记录日志。

通过NuGet安装Log4Net。

ASP.NET MVC使用Log4Net记录异常日志并跳转到静态页

需求是:当出错时导向到Error.html静态页面,Log4Net记录错误信息。

大致的思路是:

1、写一个记录日志的接口2、实现记录日志接口的类,用Log4Net的API实现3、在Web.config中配置Log4Net4、在Global.asax中注册Log4Net5、自定义一个出错页,以便在出错时导向到该静态页面6、ASP.NET MVC默认的异常过滤器是HandleErrorAttribute,我们需要自定义一个继承HandleErrorAttribute的过滤器,并把自定义的过滤器注册到全局过滤器中去

首先定义一个记录日志的接口。

public interface ILoggerService
{
void Info(string message);
void Warn(string message);
void Debug(string message);
void Error(string message);
void Error(Exception ex);
void Fatal(string message);
void Fatal(Exception ex);
}

实现ILoggerService,使用用Log4Net的API实现。

public class LogHelper : ILoggerService
{
private ILog _logger;
public LogHelper()
{
_logger = LogManager.GetLogger(
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}

public void Info(string message) {
_logger.Info(message);
}
public void Warn(string message) {
_logger.Warn(message);
}
public void Debug(string message) {
_logger.Debug(message);
}
public void Error(string message) {
_logger.Error(message);
}
public void Error(Exception ex) {
_logger.Error(ex.Message, ex);
}
public void Fatal(string message) {
_logger.Fatal(message);
}
public void Fatal(Exception ex) {
_logger.Fatal(ex.Message, ex);
}
}

在Web.config中配置Log4Net。

<configuration>
<configSections>
……
<!–日志的配置–>
<section name=\”log4net\” type=\”log4net.Config.Log4NetConfigurationSectionHandler,log4Net\” />
</configSections>
……
<!–日志的配置开始–>
<log4net>
<root>
<level value=\”ALL\” />
<appender-ref ref=\”SysAppender\” />
</root>
<logger name=\”WebLogger\”>
<!–配置日志的级别,低于此级别的就不写到日志里面去–>
<level value=\”DEBUG\” />
</logger>
<!–系统日志的格式–>
<appender name=\”SysAppender\” type=\”log4net.Appender.RollingFileAppender,log4net\”>
<param name=\”File\” value=\”App_Data/\” />
<param name=\”AppendToFile\” value=\”true\” />
<param name=\”RollingStyle\” value=\”Date\” />
<param name=\”DatePattern\” value=\”&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;\” />
<param name=\”StaticLogFileName\” value=\”false\” />
<layout type=\”log4net.Layout.PatternLayout,log4net\”>
<!–<param name=\”ConversionPattern\” value=\”%d [%t] %-5p %c – %m%n\” />–>
<conversionPattern value=\”{%level}%date{MM/dd HH:mm:ss} – %message%newline%newline\”/>
</layout>
</appender>
<!–控制台日志的格式–>
<appender name=\”consoleApp\” type=\”log4net.Appender.ConsoleAppender,log4net\”>
<layout type=\”log4net.Layout.PatternLayout,log4net\”>
<param name=\”ConversionPattern\” value=\”%d [%t] %-5p %c – %m%n\” />
</layout>
</appender>
</log4net>
<!–日志的配置结束–>
</configuration>

在全局文件Global.asax中注册Log4Net。

public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
……
//读取日志 如果使用log4net,应用程序一开始的时候,都要进行初始化配置
log4net.Config.XmlConfigurator.Configure();
}
}

ASP.NET MVC默认的异常过滤器是HandleErrorAttribute,我们需要自定义,继承该类。

public class MyHandleExceptionAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
var log = new LogHelper();
log.Error(\”被系统过滤捕获的异常\” + filterContext.Exception);
filterContext.HttpContext.Response.Redirect(\”/Error.html\”);
}
}

自定义的异常过滤器当让要注册到全局过滤器中去。打开App_Start文件夹中的FilterConfig类,修改如下:

public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute());
filters.Add(new MyHandleExceptionAttribute());
}
}

在HomeController中故意留一个错误。

public class HomeController : Controller
{
public ActionResult Index()
{
int a = 10;
int b = 0;
var result = a/b;
return View();
}
}

在项目根文件夹下顶一个Error.html静态文件,用来呈现错误提示信息。

当浏览器请求Home/Index视图,导向到Error.html出错页,Log4Net自动为我们在App_Data目录下记录了异常信息。

到此这篇关于ASP.NET MVC使用Log4Net记录异常日志跳转到静态页的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持悠久资源网。

您可能感兴趣的文章:

  • Asp.Net Core配置多环境log4net配置文件的全过程
  • ASP.NETCore使用Log4net实现日志记录功能
  • C#使用log4net打日志
  • .net项目使用日志框架log4net
  • .NET6在WebApi中使用日志组件log4net
  • asp.net中使用log4net详解
  • 在.NET 6中使用日志组件log4net的方法
  • .NET Core下使用Log4Net记录日志的方法步骤
  • ASP.NET MVC中使用log4net的实现示例

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 ASP.NET ASP.NET MVC使用Log4Net记录异常日志并跳转到静态页 https://www.u-9.cn/biancheng/aspnet/94109.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务