網站首頁 編程語言 正文
自動依賴注入
在?AbpBase.Web
?的?AbpBaseWebModule
?中,添加一個函數:
此函數用于掃描模塊中的服務,自動將其加入容器中,這樣就不需要收到加入了。
////// 自動掃描所有的服務并進行依賴注入 /// /// private void ConfigureAutoIoc(ServiceConfigurationContext context) { context.Services.AddAssemblyOf(); context.Services.AddAssemblyOf (); }
然后在?ConfigureServices
?里面,加上
// 配置依賴注入服務 ConfigureAutoIoc(context);
這些模塊中繼承了?ITransientDependency
?接口的類型都會被自動注入到 DI 容器中。
添加日志依賴
ABP 中,封裝了 Serilog 作為日志組件,大家可以在?AbpBase.Web
?項目 中使用 Nuget 安裝?Volo.Abp.AspNetCore.Serilog
?包,版本為 3.1.2。
因為 Web 是最上層部分,Volo.Abp.AspNetCore.Serilog
?已經封裝好了,但是功能還不夠多,所以我們還需要需要繼續添加 Serilog 提供的拓展。
由于?AbpBase.Application
?模塊是服務提供模塊,也是要使用到日志功能的,所以我們需要在?AbpBase.Application
?中,用 Nuget 添加 兩個包:
Serilog.AspNetCore
?包,版本 3.4.0;
Serilog.Sinks.Async
?包,版本?1.4.0
?;
然后在?AbpBaseApplicationModule
?中,增加一個注入:
public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddSingleton(Serilog.Log.Logger); }
添加日志功能
日志往往要分級、按日期記錄等,因此我們這里配置一個簡單的分級日志配置。
在?Program.cs
?中,添加一個函數:
private static void ConfigLog() { Serilog.Log.Logger = new LoggerConfiguration() #if DEBUG .MinimumLevel.Debug() #else .MinimumLevel.Information() #endif .MinimumLevel.Override("Microsoft", LogEventLevel.Information) .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) .Enrich.FromLogContext() .WriteTo.Async(c => c.File($"Logs/{DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture)}-logs.txt")) .WriteTo.Logger(log => log.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Fatal) .WriteTo.File( $"Logs/{(DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) + "-Fatal.txt")}", fileSizeLimitBytes: 83886080), LogEventLevel.Fatal) .WriteTo.Logger(log => log.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Error) .WriteTo.File( $"Logs/{(DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture) + "-Error.txt")}", fileSizeLimitBytes: 83886080), LogEventLevel.Fatal) .WriteTo.Console() .CreateLogger(); }
這個函數中配置了 Seriolg 日志輸出,我們將日志分成?Error.txt
、Fatal.txt
、logs.txt
?三個等級,還設置按日期新建日志文件,并且每個日志文件最大為 8 MB。
讀者可以根據情況自行調整。
然后在?CreateHostBuilder
?后面加上:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }) .UseAutofac() .UseSerilog();
再將 Main 方法改成:
public static int Main(string[] args) { try { ConfigLog(); Serilog.Log.Information("Starting web host."); CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) { Serilog.Log.Fatal("Host terminated unexpectedly!"); return 1; } finally { Serilog.Log.CloseAndFlush(); } }
之后我們將可以獲得一個帶有日志功能的 Web 程序了。
依賴注入
如果你需要使用日志服務,則可以引用?using Serilog;
,
然后使用以下格式使用注入服務:
private readonly ILogger _ILogger; public CustomerExceptionHandler(ILogger logger) { _ILogger = logger; }
完成后,源碼可以參考?https://github.com/whuanle/AbpBaseStruct/tree/master/src/3/AbpBase
源碼地址:https://github.com/whuanle/AbpBaseStruct
原文鏈接:https://www.cnblogs.com/whuanle/p/13679979.html
相關推薦
- 2024-03-14 AOP切面編程,以及自定義注解實現切面
- 2022-05-11 React中的Refs屬性你來了解嗎_React
- 2023-07-28 select 框添加樹結構(todu)
- 2022-07-30 jQuery?UI組件介紹_jquery
- 2022-03-19 Redis序列化存儲及日期格式的問題處理_Redis
- 2021-12-10 Oracle數據庫備份還原詳解_oracle
- 2022-07-07 python如何實現數組元素兩兩相加_python
- 2022-04-25 ASP.NET?Core?MVC中過濾器工作原理介紹_實用技巧
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支