`
niunan
  • 浏览: 719476 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

asp.net core中使用log4net

 
阅读更多

和之前的ASP.NET MVC中的使用LOG4NET的方法有些不同,这里先记录一下,使用步骤如下 :

 

1. 建立 ASP.NET CORE项目中,NUGET中搜索log4net后下载安装

 

2. 根目录建立 log4net.config文件,内容如下:

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- This section contains the log4net configuration settings -->
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
    </appender>

    <!--<appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="log-file.log" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>-->

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logfile/" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <staticLogFileName value="false" />
      <datePattern value="yyyyMMdd'.log'" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="1MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

    <!-- Setup the root category, add the appenders and set the default level -->
    <root>
      <level value="ALL" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="FileAppender" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>

  </log4net>
</configuration>

 

 

 

3. Startup.cs文件中的Startup方法和ConfigureServices方法里的AddMvc代码改下,核心代码如下,记得引用相应的命名空间:

 

        //log4net日志
        public static ILoggerRepository repository { get; set; }

        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;

            //加载log4net日志配置文件
            repository = LogManager.CreateRepository("NETCoreRepository");
            XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {

            services.AddMvc(options =>
            {
                options.Filters.Add<Models.HttpGlobalExceptionFilter>(); //加入全局异常类
            });
        }

4. Models文件夹中建立 HttpGlobalExceptionFilter.cs 类,用于全局异常后记录到日志中,内容代码如下 :

 

using log4net;
using Microsoft.AspNetCore.Mvc.Filters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace WebApplication1.Models
{
    /// <summary>
    /// 全局异常类
    /// </summary>
    public class HttpGlobalExceptionFilter : IExceptionFilter
    {
        private ILog log = LogManager.GetLogger(Startup.repository.Name, typeof(HttpGlobalExceptionFilter));
        public void OnException(ExceptionContext context)
        {
            log.Error(context.Exception);
        }
    }
}

5. 下面是控制器的代码,有异常会自动记录下来,用那个log也能手工记录日志信息

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using log4net;
using Microsoft.AspNetCore.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        private ILog log = LogManager.GetLogger(Startup.repository.Name, typeof(HttpGlobalExceptionFilter));
        public IActionResult Index()
        {
            throw new Exception("牛腩自定义异常!!!");  //有异常则会记录到logfile文件夹中
            return View();
        }

        public IActionResult About()
        {
            ViewData["Message"] = "Your application description page.";
            log.Info("打开about页面了!!!"); //普通的记录日志
            return View();
        }
 
    }
}

分享到:
评论

相关推荐

    .NET_Core2.0_使用swagger调试API接口_log4记录日志_外加上传图片

    在ASP.NET Core 2.0应用中,由于默认的日志提供者可能不足以满足复杂的需求,我们通常会引入log4net。首先,需要在项目中引用`log4net`库,然后在`appsettings.json`中配置日志输出目的地,如控制台、文件或数据库。...

    asp.net core 使用NLog打印日志到txt文件

    本篇文章将详细探讨如何在ASP.NET Core中使用NLog来将日志输出到TXT文件,并实现文件大小限制及位置信息的显示。 首先,让我们了解NLog的基本概念。NLog提供了灵活的日志配置,允许开发者定义多个目标(如控制台、...

    【ASP.NET编程知识】ASP.NET Core读取Request.Body的正确方法.docx

    首先,在 ASP.NET Core 中,Request.Body 是一个 Stream 对象,它不能被直接读取。我们需要使用 StreamReader 对象来读取 Request.Body。下面是一个简单的示例代码: ```csharp public override void ...

    .net core整合log4net的解决方案

    从log4net的基本介绍、兼容性问题处理、配置文件使用、中间件注册到日志的记录和输出,一步步引导读者了解如何在.net core项目中使用log4net进行日志记录。同时,这篇文章也传达了在开发中遇到问题时,如何利用社区...

    Lot4net dll及使用说明 (ASP.NET CORE 2.1)

    这个DLL文件使得开发者能够在ASP.NET CORE项目中直接引用和使用`log4net`的功能,无需安装额外的包或依赖。 **2. 配置Log4net** 在`Log4net.config`文件中,我们可以配置`log4net`的行为,包括定义日志输出级别...

    AspNetCore配置多环境log4net配置文件.doc

    包,这样可以在 ASP.NET Core 中使用 log4net。 2. **创建环境特定的配置文件**:就像 ASP.NET Core 的 `appsettings.json` 文件一样,我们可以为每个环境创建单独的 log4net 配置文件。例如,我们可以创建 `log4...

    【ASP.NET编程知识】.NET Core实现分表分库、读写分离的通用 Repository功能.docx

    .NET Core 实现分表分库、读写分离的通用 Repository 功能是指使用 FreeSql.Repository 库来实现通用的仓储层功能,实现了基础的仓储层(CURD),并且支持分表分库、读写分离等功能。 FreeSql.Repository 库是基于 ...

    Log4Net在asp.net Core 5.0的项目配置,可以入库

    Log4Net在ASP.NET Core 5.0下的配置,让日志写入进数据库和本地文件

    asp.net控制键盘keycode事件

    以上就是关于“asp.net控制键盘keycode事件”的详细解释,希望能帮助你理解和掌握如何在ASP.NET环境中使用键盘事件和`keycode`。在实际开发中,可以根据需求灵活运用这些技术,创建更加智能化和响应式的Web应用。

    ASP.Net Core 2.1 官方中文版

    - ASP.NET Core 支持多种日志提供程序,包括 Console、EventLog 和 Serilog。 - **错误处理**: - 通过使用全局异常处理程序可以统一处理应用中的异常。 - 可以通过 `try-catch` 语句捕获异常,并使用中间件来...

    .NET CORE WebApi-MVC+Oracle EF项目框架源码.rar

    【原创】项目框架为 .net Core 3.1 MVC IOC + Oracle +EF,集成了Web端和WebAPI端,Web端已经集成文件上传、拦截器和示例代码,WebAPi集成了Log4net、跨域、文件上传和示例代码,使用者只需要编写对应的业务逻辑...

    4个asp.net项目.zip

    9. **调试与日志记录**: 在项目中,开发者可能会使用Visual Studio的调试工具,或者集成如Log4Net、NLog等日志记录库,以便在问题排查时收集信息。 10. **前端技术**: ASP.NET项目往往结合HTML、CSS和JavaScript,...

    ASP.NET-[人才房产]无忧之源招聘系统及Log4Net源码.zip

    在"Log4Net源码"部分,我们可以学习到如何在ASP.NET项目中集成Log4Net进行日志记录。开发者通常会通过添加引用、配置XML配置文件以及在代码中调用Log4NetAPI来实现对应用程序运行时的详细跟踪,这对于问题排查和性能...

    ASP.NET项目实战(pdf)

    12. **错误处理与日志记录**:学习如何优雅地处理异常,以及使用NLog、Log4Net等工具进行日志记录,便于问题排查。 通过"ASP.NET项目实战"的学习,你将具备设计和实施复杂Web应用的能力,理解Web开发的最佳实践,并...

    Little ASP.NET Core Book

    关于ASP.NET Core 2.0的一本小书。 The Little ASP.NET Core Book is structured as a tutorial. You'll build a to-do app from start to finish and learn: The basics of the MVC (Model-View-Controller) ...

    ASP.NET CORE 3.1使用SignlR的Demo

    - **Persistent Connections**:SignalR提供了一种更底层的方式来处理实时通信,适合简单的推送场景,但在ASP.NET Core中,通常更推荐使用Hub。 3. **WebSocket支持** ASP.NET Core 3.1和SignalR结合,充分利用...

    asp.net bbs论坛

    ASP.NET提供了一些内置的异常处理机制,同时可以通过第三方库如log4net进行日志记录。 10. **单元测试与持续集成**:对于大型项目,单元测试和持续集成是保证代码质量的重要手段。开发者可以利用NUnit、xUnit等工具...

    asp.net 版通讯录(c#)

    ASP.NET提供了异常处理机制,同时可以集成日志记录库,如Log4Net,以便跟踪和分析错误。 综上所述,这个ASP.NET版通讯录项目涵盖了Web开发的核心技术,包括Web Forms编程、C#语法、数据库操作、用户界面设计、数据...

    log4net 自定义扩展字段 SQL

    实现log4net的自定义字段扩展 Log4Net中添加自定义日志信息。我们在写日志的时候并不是只写消息(Message),有些情况需要记录自定义的日志信息等。在Log4Net中增加自定义字段UserName(用户名),Category(类别)这两...

Global site tag (gtag.js) - Google Analytics