1. add the packages
* don't need serilog.sinks.console if just logging to file / or not using serilog console (can use standard console logger Microsoft.Extensions.Logging.Console)
2. when the app starts call a setup method to configure everything (need something similar when/if setting up dependancy injection)
2a. in the configuration method, create a config (IConfigurationRoot) based on the json file
2b. pass the config into the configuration of the serilog
2c. add the serilog to the services
* you only need the AddSerilog line. The console lines adds console logging, the addconfiguration line applies configuration for the console logging but doesn NOT effect serilog
3. add a json file to the project
3a. ensure copy local is set so file goes with exe to output directory
Properties -> Copy to Output Directory -> Copy if newer
3b. configure serilog
Entire Program class
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello,
starting processing");
var serviceProvider = ConfigureServices(new ServiceCollection());
var core =
serviceProvider.GetService<Core>();
core.Process();
Console.WriteLine("Done, press
enter to exit");
Console.Read();
}
private static IServiceProvider
ConfigureServices(IServiceCollection services)
{
// add in our config file
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
var config = builder.Build();
// serilog configuration
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(config)
.CreateLogger();
services.AddSingleton(typeof(IConfigurationRoot),
config); //
add our config to the services collection
services.AddSingleton<IChangeLogService, ChangeLogService>();
services.AddSingleton<IFormsToolKitService,
FormsToolKitService>();
services.AddSingleton<IFormsToolKitPdfService,
FormsToolKitPdfService>();
services.AddSingleton<ISendMailService, SendMailService>();
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
services.AddSingleton<ILoggerFactory, LoggerFactory>(); // kinda probably
don't need this as we have the above line
services.AddLogging(configure =>
configure.AddConsole()
.AddSerilog()
.AddConfiguration(config.GetSection("Logging"))
);
services.AddTransient<Core>();
var serviceProvider =
services.BuildServiceProvider();
return serviceProvider;
}
}