北京58网站建设,互联网工程师,杭州做宠物网站的公司,安卓编程软件app翻译自 Mohamad Lawand 2021年3月24日的文章 《.NET 5 Console App with Dependency Injection, Serilog Logging, and AppSettings》 [1]在本文中#xff0c;我们将构建一个 .NET 5 控制台应用程序#xff0c;该应用程序支持依赖注入、日志记录和 appsettings 配置。你也可以… 翻译自 Mohamad Lawand 2021年3月24日的文章 《.NET 5 Console App with Dependency Injection, Serilog Logging, and AppSettings》 [1]在本文中我们将构建一个 .NET 5 控制台应用程序该应用程序支持依赖注入、日志记录和 appsettings 配置。你也可以在 YouTube 上观看完整的视频[2]还可以在 GitHub 上下载源代码[3]。我们要用到的开发工具有Visual Studio Code (https://code.visualstudio.com/).NET Core SDK (https://dotnet.microsoft.com/download)我们要实现的功能包含依赖注入Serilog LoggerAppSettings我们将构建一个示例应用程序该应用程序将模拟通过依赖注入连接数据库并输出日志。首先我们在终端中创建应用程序dotnet new console -n SampleApp
创建好应用程序后在 Visual Studio Code 中打开应用程序然后构建并运行一下以确保一切正常dotnet build
dotnet run
接下来是安装我们所需的程序包dotnet add package Microsoft.Extensions.Hosting
dotnet add package Serilog.Extensions.Hosting
dotnet add package Serilog.Settings.Configuration
dotnet add package Serilog.Sinks.Console
下一步是添加 appsettings.json在应用程序的根目录中右键单击并选择 New File将文件名称设置为 appsettings.json。我们将在 appsettings 中添加所需的配置项——Serilog以及用于模拟数据库连接的 ConnectionStrings{Serilog: {MinimalLevel: {Default: Information,Override: {System: Warning,Microsoft: Information}}},ConnectionStrings: {DefaultConnection: DataSource:app.db;CacheShared}
}
我们从实现日志记录的机制开始讲起。在 Program.cs 中添加以下代码该段代码的职责是读取 appsetting.json 并将其提供给我们的应用程序// 检查应用程序运行的当前目录找到并加载 appsetting.json
// 然后添加环境变量这些环境变量会覆盖 appsettings.json 中的配置
static void BuildConfig(IConfigurationBuilder builder)
{builder.SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile(appsettings.json, optional: false, reloadOnChange: true).AddEnvironmentVariables();
}
然后我们需要创建另一个方法该方法是我们应用程序的启动方法它负责将所有的内容汇集在一起。我们将定义 Serilog 和 .NET Core 中的依赖注入机制。static IHost AppStartup()
{var builder new ConfigurationBuilder();BuildConfig(builder);// 定义 Serilog 配置Log.Logger new LoggerConfiguration() //初始化 Logger 配置.ReadFrom.Configuration(builder.Build()) //将 Serilog 连接到我们的配置.Enrich.FromLogContext() //从装入的 Serilog 向日志添加更多信息.WriteTo.Console() //决定在哪里显示日志.CreateLogger(); //初始化 LoggerLog.Logger.Information(Application Starting);// 初始化依赖注入容器var host Host.CreateDefaultBuilder() //初始化 Host .ConfigureServices((context, services) //向容器添加服务{}).UseSerilog() //添加 Serilog.Build(); //构建 Hostreturn host;
}
现在让我们实现数据服务用它来模拟数据库。让我们创建一个名为 DataService 的新类和一个名为 IDataService 的接口// 接口
public interface IDataService
{void Connect();
}// 类
public class DataService : IDataService
{private readonly ILoggerDataService _log;private readonly IConfiguration _config;public DataService(ILoggerDataService log, IConfiguration config){_log log;_config config;}public void Connect(){// 读取连接字符串var connString _config.GetValuestring(ConnectionStrings:DefaultConnection);_log.LogInformation(Connection String {cs}, connString);}
}
然后我们需要更新 Program.cs 类中的 AppStartup 方法以注入 DataServicevar host Host.CreateDefaultBuilder() //初始化 Host .ConfigureServices((context, services) //向容器添加服务{services.AddTransientIDataService, DataService(); //AddTransient 意味着每次请求都会创建一个实例。}).UseSerilog() //添加 Serilog.Build(); //构建 Host
最后让我们在 Main 方法中调用他们static void Main(string[] args)
{var host AppStartup();var dataService ActivatorUtilities.CreateInstanceDataService(host.Services);dataService.Connect();
}
好了就是这样。感谢您的阅读。相关链接https://dev.to/moe23/net-5-console-app-with-dependency-injection-serilog-logging-and-appsettings-3d4n .NET 5 Console App with Dependency Injection, Serilog Logging, and AppSettings ↩︎https://youtu.be/4mEN1XpLN_s ↩︎https://github.com/mohamadlawand087/v22-DotnetConsole ↩︎作者 Mohamad Lawand译者 技术译民出品 技术译站https://ITTranslator.cn/END