温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ASP.NET Core怎么添加记录日志

发布时间:2022-04-07 13:45:38 来源:亿速云 阅读:252 作者:iii 栏目:开发技术

这篇文章主要介绍了ASP.NET Core怎么添加记录日志的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ASP.NET Core怎么添加记录日志文章都会有所收获,下面我们一起来看看吧。

1.前言

ASP.NET Core支持适用于各种内置和第三方日志记录提供应用程序的日志记录API。

2.添加日志提供程序

日志记录提供应用程序显示或存储日志。例如,控制台提供应用程序在控制台上显示日志,Azure Application Insights提供应用程序将这些日志存储在Azure Application Insights中。要添加提供应用程序,请在Program.cs中调用提供程序的Add{provider name}扩展方法:

public static void Main(string[] args)
{
    var webHost = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            var env = hostingContext.HostingEnvironment;
            config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                  .AddJsonFile($"appsettings.{env.EnvironmentName}.json",
                      optional: true, reloadOnChange: true);
            config.AddEnvironmentVariables();
        })
        .ConfigureLogging((hostingContext, logging) =>
        {
            //添加appsettings.json中关于日志的Logging节点配置
            logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
            //日志控制台记录提供程序
            logging.AddConsole();
            //日志Debug记录提供程序
logging.AddDebug();
            //日志EventSource记录提供程序
logging.AddEventSourceLogger();
        })
        .UseStartup<Startup>()
        .Build();
    webHost.Run();
}

默认项目模板调用CreateDefaultBuilder,该操作将添加日志记录(控制台、DEBUG、EventSource)提供给应用程序:

public static void Main(string[] args)
{
    CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>();

3.创建日志

创建日志可以从依赖注入(DI)中获取ILogger<TCategoryName>对象。以下Razor页面示例会创建级别为Information且类别为AboutModel类(Models/AboutModel)的日志:

public class AboutModel
{
    private readonly ILogger _logger;
    public AboutModel(ILogger<AboutModel> logger)
 {
    //ILogger是Core内置日志组件,默认已经注入,无需再次手动注入
        _logger = logger;
    }
    public void OnGet()
    {
        var Message = $"About page visited at {DateTime.UtcNow.ToLongTimeString()}";
        _logger.LogInformation("Message displayed: {Message}", Message);
    }
}
private readonly ILogger<AboutModel> _logger;
public HomeController(ILogger<AboutModel> logger)
{
    _logger = logger;
}
public IActionResult Index()
{
    AboutModel aboutModel = new AboutModel(_logger);
    aboutModel.OnGet();
    return View();
}

通过Kestral服务器启动调试:

ASP.NET Core怎么添加记录日志

看看控制台输出日志记录:

ASP.NET Core怎么添加记录日志

日志“级别”代表所记录事件的严重程度。日志“类别”是与每个日志关联的字符串。ILogger<T>实例会创建“类别”为类型T的完全限定名称的日志。

3.1启动时(Startup)创建日志

要将日志写入Startup类,构造函数签名需包含ILogger参数:

public class Startup
{
    private readonly ILogger _logger;
    public Startup(IConfiguration configuration, ILogger<Startup> logger)
    {
        Configuration = configuration;
        _logger = logger;
    }
    public IConfiguration Configuration { get; }
    public void ConfigureServices(IServiceCollection services)
    {
        _logger.LogInformation("Added TodoRepository to services");
    }
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            _logger.LogInformation("In Development environment");
        }
    }
}

通过Kestral服务器启动调试看看控制台输出日志记录:

ASP.NET Core怎么添加记录日志

3.2在程序中(Program)创建日志

如果使用CreateDefaultBuilder,则可自行选择提供应用程序来替换默认应用程序。调用 ClearProviders,然后添加所需的应用程序。

public class Program
{
    public static void Main(string[] args)
    {
        var host = CreateWebHostBuilder(args).Build();
        var logger = host.Services.GetRequiredService<ILogger<Program>>();
        logger.LogInformation("Seeded the database.");
        host.Run();
    }
    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .ConfigureLogging(logging =>
    {
        logging.ClearProviders();
        logging.AddConsole();
    });
}

通过Kestral服务器启动调试看看控制台输出日志记录:

ASP.NET Core怎么添加记录日志

4.Configuration

日志记录提供程序配置由一个或多个配置提供程序提供:

  • 文件格式(INI、JSON 和 XML)。

  • 命令行参数。

  • 环境变量。

  • 内存中的.NET对象。

  • 未加密的机密管理器存储。

  • 加密的用户存储,如 Azure Key Vault。

  • (已安装或已创建的)自定义提供程序。

例如,日志记录配置通常由应用设置文件的Logging部分提供。以下示例显示了典型 appsettings.Development.json 文件的内容:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    },
    "Console":
    {
      "IncludeScopes": true
    }
  }
}

Logging属性可具有LogLevel和日志提供程序属性(显示控制台)。Logging下的LogLevel属性指定了用于记录所选类别的最低级别。在本例中,System和Microsoft类别在Information级别记录,其他均在Debug级别记录。如果提供程序支持日志作用域,则IncludeScopes将指示是否启用这些域。

5.日志级别

每个日志都指定了一个LogLevel值。日志级别指示严重性或重要程度。如果LogLevel是Warning级别,那么跟踪Trace,Debug,Information级别将不会记录。ASP.NET Core 定义了以下日志级别(按严重性从低到高排列): 

  • 跟踪Trace = 0

  • 调试Debug = 1

  • 信息 Information = 2

  • 警告 Warning = 3

  • 错误 Error = 4

  • 严重 Critical = 5

6.内置日志记录提供程序

  • 控制台:logging.AddConsole(); dotnet run 查看控制台日志记录输出。

  • 调试:logging.AddDebug(); 在 Linux 中,此提供程序将日志写入 /var/log/message。

  • EventSource:logging.AddEventSourceLogger();在Windows中,它使用PerfView实用工具收集和查看日志,但尚无支持Linux或macOS的事件集合和显示工具。

  • EventLog:logging.AddEventLog();向Windows事件日志发送日志输出。

  • TraceSource:logging.AddTraceSource(sourceSwitchName);应用必须在.NET Framework(而非.NET Core)上运行。

7.第三方日志记录提供程序

适用于ASP.NET Core的第三方日志记录框架,链接地址官方文档中有:

  • elmah.io(GitHub 存储库)

  • Gelf(GitHub 存储库)

  • JSNLog(GitHub 存储库)

  • KissLog.net(GitHub 存储库)

  • Loggr(GitHub 存储库)

  • NLog(GitHub 存储库)

  • Sentry(GitHub 存储库)

  • Serilog(GitHub 存储库)

  • Stackdriver(Github 存储库)

例如使用NLog:NLog是一个灵活的免费日志记录平台,适用于各种.NET平台,包括.NET标准。NLog可以轻松写入多个目标。(数据库,文件,控制台)并即时更改日志记录配置。

关于“ASP.NET Core怎么添加记录日志”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“ASP.NET Core怎么添加记录日志”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI