.Net Core使用Logger实现log写入本地文件系统

下面是详细讲解".Net Core使用Logger实现log写入本地文件系统"的完整攻略。

一、前言

在开发过程中,记录系统运行状态和错误信息是非常重要的一件事情,这时候就需要使用log来记录。在.Net Core中,可以通过Logger实现log写入本地文件系统。

二、Logger介绍

Logger是.NET Core框架中的一个基本组件,它允许您轻松地记录指定级别的信息,包括调试、信息、警告和错误等级。Logger中还包含了各种不同的日志记录器提供程序(Logger Provider),这些记录器提供程序允许将日志信息写入各种数据源,包括控制台、文件、数据库、Elasticsearch等。

三、实现步骤

1. 准备工作

首先,我们需要创建一个.Net Core项目。可以使用Visual Studio或是dotnet命令行工具创建项目。

2. 安装依赖

使用NuGet Package Manager安装Microsoft.Extensions.Logging和Microsoft.Extensions.Logging.File包。这两个包分别提供了框架级别的日志记录器和能够将日志信息写入文件的记录器提供程序。

3. 配置Logger

在appsettings.json文件中添加日志相关的配置项。其中LogLevel设置为日志的最小记录级别,FileProvider指定文件写入方式,路径为Log文件夹下的logs.txt文件。

{
  "Logging": {
    "LogLevel": {
      "Default": "Information"
    },
    "File": {
      "Path": ".\\Log\\logs.txt",
      "FileSizeLimitBytes": 10000000
    },
    "FileProvider": {
      "type": "Microsoft.Extensions.Logging.File.FileLoggerProvider, Microsoft.Extensions.Logging.File",
      "fileName": "logs.txt",
      "shared": true,
      "includeScopes": false,
      "logDirectory": ".\\Log"
    }
  }
}

4. 注入Logger

在Program.cs文件中,使用CreateDefaultBuilder方法配置WebHostBuilder,然后在Startup.cs文件中注入Logger。

//Program.cs
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                   .ConfigureLogging(logging =>
                   {
                       logging.ClearProviders();
                       logging.AddConfiguration(loggingConfiguration.GetSection("Logging"));
                       logging.AddConsole(); // 注册 Console Logger
                       logging.AddDebug(); // 注册 Debug Logger
                       logging.AddFile();
                   })
                   .UseStartup<Startup>();

//Startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime applicationLifetime, ILogger<Startup> logger)
{
     //使用Logger记录日志信息
     logger.LogInformation("Application started");
     applicationLifetime.ApplicationStopping.Register(() =>
     {
         logger.LogInformation("Application stopping");
     });
}

5. 测试Logger

使用Logger记录不同级别的日志信息,并查看是否成功写入logs.txt日志文件中。

private readonly ILogger<HomeController> _logger;

public HomeController(ILogger<HomeController> logger)
{
    _logger = logger;
}

public IActionResult Index()
{
    _logger.LogInformation("This is a test log message.");
    return View();
}

public IActionResult Privacy()
{
    _logger.LogWarning("This is a warning log message.");
    return View();
}

public IActionResult Error()
{
    _logger.LogError("This is an error log message.");
    return View();
}

四、示例说明

示例一:

在项目中加入Logger后,记录所有的控制台信息,并将信息输出到logs文件中。在控制器中编写代码,如下所示:

ILogger logger = LogManager.CreateLogger<YourController>();
logger.LogInformation("The message");
logger.LogWarning("Something to warn about");
logger.LogError("Something went wrong");

示例二:

在.NET Core Web应用程序中记录日志,如果需要将日志保存到指定的日志文件中,可以使用以下代码示例:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
        services.AddLogging(loggingBuilder =>
        {
            loggingBuilder.AddConfiguration(Configuration.GetSection("Logging"));
            loggingBuilder.AddConsole();
            loggingBuilder.AddFile(Configuration.GetValue<string>("Logging:FilePath"));
        });
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("error");
        }

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });

        loggerFactory.AddFile(Configuration.GetValue<string>("Logging:FilePath"));
    }
}

public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }

    public IActionResult Index()
    {
        _logger.LogInformation("This is an index action of home controller.");
        return View();
    }
}

以上就是“.Net Core使用Logger实现log写入本地文件系统”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.Net Core使用Logger实现log写入本地文件系统 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • asp.net编程获取项目根目录实现方法集合

    获取ASP.NET网站或应用程序的项目根目录,是我们在编程实现某些功能时经常会用到的技巧。下面是一些实现方法的集合,你可以根据需要选择使用。 方法一:使用 AppDomain.CurrentDomain.BaseDirectory 在 ASP.NET 开发中,可以通过 AppDomain.CurrentDomain.BaseDirectory 获取项目的根目…

    C# 2023年6月3日
    00
  • C# GDI+实现时钟表盘

    C# GDI+实现时钟表盘的攻略如下: 1. 准备工作 首先需要在项目中引入System.Drawing和System.Drawing.Drawing2D命名空间,然后在代码中创建一个PictureBox控件,这个控件将用来显示时钟。 2. 绘制表盘 我们可以先创建一个空白的位图对象,然后在该对象中绘制表盘的外圆、刻度以及数字等元素。这个过程中需要使用到Gr…

    C# 2023年6月1日
    00
  • C#实现控制电脑注销,关机和重启

    以下是C#实现控制电脑注销、关机和重启的完整攻略: 1. 获取系统权限 为了能够控制电脑的操作,首先需要获取系统管理员权限。 可以使用以下代码获取管理员权限: ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.Verb = "runas"; startInfo.F…

    C# 2023年5月14日
    00
  • C#递归应用之实现JS文件的自动引用

    下面我将详细讲解“C#递归应用之实现JS文件的自动引用”的完整攻略,包括过程和示例。 背景介绍 在网页中,经常需要引入多个JS文件,但是手动一个一个引入比较麻烦,而且还容易出错。因此,我们可以通过C#递归应用实现JS文件的自动引用。 实现步骤 具体实现步骤如下: 获取指定文件夹下所有.js文件的路径 将这些路径添加到HTML代码的头文件中 如果JS文件中还有…

    C# 2023年6月7日
    00
  • 带你一文了解C#中的Expression

    带你一文了解C#中的Expression 什么是Expression 在C#中,Expression是一个抽象类,它代表了一个包含单个值、操作符、变量、方法调用或属性访问等逻辑的树形结构。 Expression对象可以被应用于以程序方式表示代码逻辑的情况,通常被用于了解程序上下文、编译代码或构建API。具体来说,Expression很常用于Lambda表达式…

    C# 2023年6月1日
    00
  • C#交换两个变量值的几种方法总结

    C#交换两个变量值的几种方法总结 在C#程序中,经常需要交换两个变量的值。这个过程看起来很简单,但实际上有很多种实现方式。在本文中,我们将总结几种常见的交换两个变量值的方式。 1. 使用临时变量交换值 这是最基本的交换变量值的方法。我们可以创建一个临时变量,将变量A的值存储在临时变量中,然后将变量A的值设置为变量B的值,最后将临时变量的值设置为变量B的值。 …

    C# 2023年5月31日
    00
  • .NET应用程序集DLL与EXE工作机制及原理介绍

    下面是详细讲解“.NET应用程序集DLL与EXE工作机制及原理介绍”的完整攻略。 一、简介 .NET应用程序集是指在.NET平台下开发的一种可复用的代码和资源的集合,由DLL(动态链接库)和EXE(可执行文件)两种文件类型组成,其中DLL是库文件,EXE是应用程序文件。在.NET中,应用程序的逻辑和业务代码通常是以DLL的形式组织,而实际的应用程序则通过一个…

    C# 2023年6月3日
    00
  • .NET中常见的加解密算法详解

    .NET中常见的加解密算法详解 简介 在计算机系统中,加密算法是保证数据安全和隐私保护的重要手段。在.NET开发中,常使用的加解密算法有对称加密算法、非对称加密算法和哈希加密算法。 对称加密算法 对称加密算法使用相同的密钥来加密和解密数据。在.NET中,常见的对称加密算法有DES、TripleDES、AES等。其中,AES是目前最常用的对称加密算法,它支持1…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部