.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日

相关文章

  • .net中的Span类和Memory类介绍

    .NET中的Span类和Memory类介绍 在.NET中,Span类和Memory类是用于处理内存的重要类型。本攻略将介绍这两个类的基本概念、用法和示例。 Span类 Span类是一个结构体,用于表示一段连续的内存区域。它可以用于读取和写入内存,而无需进行复制或分配。Span类的定义如下: public ref struct Span<T> { …

    C# 2023年5月17日
    00
  • C# DataTable分页处理实例代码

    下面是“C# DataTable分页处理实例代码”的完整攻略: 什么是DataTable分页处理? DataTable是.NET Framework中的一个非常重要的数据对象,它可以用来存储和操作数据。很多时候,我们需要在规模较大的数据集中只提取部分数据进行显示,这时就需要进行分页处理。 如何进行DataTable分页处理? 在C#中,可以通过以下步骤来进行…

    C# 2023年5月31日
    00
  • .NET Core分布式链路追踪框架的基本实现原理

    对于“.NET Core分布式链路追踪框架的基本实现原理”的详解,我将从以下四个方面进行阐述: 什么是分布式链路追踪框架? .NET Core分布式链路追踪框架的基本实现原理 分布式链路追踪框架的作用 分布式链路追踪框架的示例演示 1. 什么是分布式链路追踪框架? 分布式系统中,一个请求通常需要经过多个微服务协同处理才能完成,而在这么多的微服务中,如果出现了…

    C# 2023年6月3日
    00
  • VS2015 C#生成dll文件的方法(32/64)

    生成dll文件是C#程序开发中的常见需求之一,下面是在VS2015中生成32/64位dll文件的完整攻略。 生成32位dll文件的攻略 打开Visual Studio 2015软件,点击File -> New -> Project,创建一个新的Class Library项目。 在“Solution Explorer”窗口中右键单击项目名称,选择“…

    C# 2023年5月14日
    00
  • log4net配置和使用方法分享

    下面是“log4net配置和使用方法分享”的完整攻略。 1. 简介 log4net是一个强大的.NET日志记录库,它允许您记录到多个输出目标,包括文件、控制台、数据库、电子邮件和其他自定义输出目标。log4net是Apache Software Foundation的一个项目,它和另一个流行的Java日志记录库log4j很相似。在本文中,我们将学习如何配置和…

    C# 2023年5月31日
    00
  • layui实现显示数据表格、搜索和修改功能示例

    以下是将layui用于显示数据表格、搜索和修改功能的完整攻略。 前置条件 首先你需要安装layui包,你可以从layui官网下载或使用CDN链接 引入layui.js和layui.css文件 显示数据表格 这是一个基于layui table模块的示例。下面是一个基本的HTML结构,它定义了一个table和一个div包含分页: <table id=&qu…

    C# 2023年5月31日
    00
  • 关于若干数据库数据插入性能的对比分析

    关于若干数据库数据插入性能的对比分析 介绍 在数据库应用中,数据插入操作是最频繁的操作之一。因此,对于数据库性能的优化,数据插入性能的分析非常重要。本文将介绍若干数据库数据插入性能对比分析的攻略。 步骤 1. 选择数据集 首先需要选择一个数据集。数据集的大小和内容对于数据插入性能对比测试的结果会有很大的影响。因此,在选择数据集时应该在考虑数据大小、数据类型、…

    C# 2023年5月31日
    00
  • .net中下载文件的实例代码

    下面是“.NET中下载文件的实例代码”的完整攻略: 1. 使用WebClient类下载文件 WebClient类提供了一个简单的方法来从远程服务器下载文件。以下是示例代码: using System.Net; public void DownloadFile(string remoteUrl, string localPath) { using (var c…

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