ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.net5 core webapi项目实战之十三:日志处理

2021-01-28 09:33:05  阅读:203  来源: 互联网

标签:webapi core userDao app public UsersController net5 logger 日志


前面虽然完成了基本功能的编码,但是这个项目还只是一个半成品,缺少一些辅助的功能,比如日志、身份验证等。

本篇将在项目中加入日志功能,把系统运行中的错误信息记录到日志文件中,方便上线后的错误排查。

 

在.net core webapi中,框架已经为我们提供了基本的日志记录服务,在Microsoft.Extensions.Logging这个程序集中,

稍显不足的是框架提供的日志服务不能记录到文件,我们需要引用第三方的组件来搭配完成日志记录功能,

比较常用的第三方日志包有Nlog、log4net等,本项目的需求只是记录到文件中,

所以使用一个轻量级的日志包Serilog.Extensions.Logging.File,先使用VS2019的NuGet包管理器安装此包,

然后在程序中引用就可以了,如下图所示:

 安装后依赖项中的包如下:

 

准备工作:

1 . 在Startup.cs中修改Configure()方法,增加对ILoggerFactory的注入支持,并提供写日志文件功能,代码如下:

 1         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
 2         public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
 3         {
 4             if (env.IsDevelopment())
 5             {
 6                 app.UseDeveloperExceptionPage();
 7 
 8             }
 9 
10             //AddFile()方法是Serilog.Extensions.Logging.File中提供的扩展方法
11             loggerFactory.AddFile("Logs/log{Date}.txt"); 12 
13 
14             app.UseRouting();
15 
16             app.UseAuthorization();
17            
18 
19             app.UseEndpoints(endpoints =>
20             {
21                 endpoints.MapControllers();
22             });
23         }

2. 修改UsersController.cs中的构造函数,增加对ILogger<out TCategoryName>的注入支持,代码如下(红色部分):

 1     [Route("api/[controller]")]
 2     [ApiController]
 3     public class UsersController : ControllerBase
 4     {
 5         private ILogger<UsersController> _logger;
 6         private IUserDao _userDao;
 7         public UsersController(ILogger<UsersController> logger, IUserDao userDao)
 8         { 
 9             _logger = logger;
10             _userDao = userDao;
11         }
12 
13         //.........  
14         //.........     
15     }

 

在终结点ManageUsers( )中加入日志功能(其他的终结点类似), 代码如下:

 1         [HttpGet]
 2         public ContentResult ManageUsers()
 3         {
 4             try
 5             {
 6                 List<User> list = _userDao.GetUserList();
 7 
 8                 _logger.LogInformation("========"+ list.Count.ToString());
 9 
10                 return Content(list.ToJson());
11             }
12             catch (Exception ex)
13             {
14                 _logger.LogError(ex, "##{p1}## UsersController-ManageUsers() Exception", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
15                 
16                 return Content("{'result':'error'}"); ;
17             }
18         }

 

访问http://localhost:52384/api/users,根目录下将生成Logs文件夹,里面是以log+当前日期命名的txt文件,如下图:

 

标签:webapi,core,userDao,app,public,UsersController,net5,logger,日志
来源: https://www.cnblogs.com/pfm33/p/14336356.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有