using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using NLog; using NLog.Config; using NLog.Targets; using NLog.Web; namespace Sample { public class Program { public static void Main(string[] args) { var config = new LoggingConfiguration(); DatabaseTarget dbTarget = new DatabaseTarget(); dbTarget.Name = "db"; dbTarget.DBProvider = "System.Data.SqlClient"; dbTarget.ConnectionString = @"Data Source=.;Initial Catalog=database;Integrated Security=True;"; dbTarget.CommandText = @"insert into dbo.Log ( Application, Logged, Level, Message, Logger, CallSite, Exception ) values ( @Application, @Logged, @Level, @Message, @Logger, @Callsite, @Exception );"; dbTarget.Parameters.Add(new DatabaseParameterInfo("@application", "$AspNetCoreNlog")); dbTarget.Parameters.Add(new DatabaseParameterInfo("@logged", "${date}")); dbTarget.Parameters.Add(new DatabaseParameterInfo("@level", "${level}")); dbTarget.Parameters.Add(new DatabaseParameterInfo("@message", "${message}")); dbTarget.Parameters.Add(new DatabaseParameterInfo("@logger", "${logger}")); dbTarget.Parameters.Add(new DatabaseParameterInfo("@callSite", "${callsite:filename=true}")); dbTarget.Parameters.Add(new DatabaseParameterInfo("@exception", "${exception:tostring}")); config.AddTarget(dbTarget); var consoleTarget = new ColoredConsoleTarget("target1") { Layout = @"${date:format=HH\:mm\:ss} ${level} ${message} ${exception}" }; config.AddTarget(consoleTarget); config.AddRuleForOneLevel(NLog.LogLevel.Error, dbTarget); // only errors to file config.AddRuleForAllLevels(consoleTarget); // all to console LogManager.Configuration = config; CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup(). ConfigureLogging(logging => { logging.ClearProviders(); logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); }) .UseNLog(); } }