[.net core template project]Console Application
· One min read
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Content Include="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.2.4" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.2.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="2.0.4" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.Elasticsearch" Version="7.1.0" />
</ItemGroup>
</Project>
{
"Logging": {
"LogLevel": {
"Default": "Information",
"System": "Error",
"Microsoft": "Error"
}
},
"Serilog": {
"MinimumLevel": "Warning",
"WriteTo": [
{
"Name": "Elasticsearch",
"Args": {
"nodeUris": "http://127.0.0.1:9200",
"indexFormat": "consoleapp-{0:yyyy.MM.dd}",
"autoRegisterTemplate": true
}
}
]
},
"ConnectionStrings": {
"Redis": "127.0.0.1:6379"
}
}
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Serilog;
using System;
using System.IO;
using System.Threading;
namespace Example
{
/// <summary>
/// Main program
/// </summary>
class Program
{
/// <summary>
/// Main entry
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddEnvironmentVariables("ASPNETCORE_")
.AddJsonFile("appsettings.json", true)
.AddJsonFile($"appsettings.{ environmentName}.json", true)
.AddEnvironmentVariables()
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
var services = new ServiceCollection()
.AddLogging((loggingBuilder) =>
{
loggingBuilder.AddConfiguration(configuration);
loggingBuilder.AddSerilog();
if (environmentName == EnvironmentName.Development)
{
loggingBuilder.AddDebug();
}
loggingBuilder.AddConsole();
});
//Register ConnectionStrings section
services.Configure<ConnectionStrings>(configuration.GetSection("ConnectionStrings"));
services.AddSingleton<IRedisLib, RedisLib>();
services.AddSingleton<Synchronizer>();
var serviceProvider = services.BuildServiceProvider();
serviceProvider.GetService<Synchronizer>().Sync(environmentName).Wait(Timeout.Infinite);
}
}
}
