public GMLogger() { var config = new NLog.Config.LoggingConfiguration(); var layout = "${time} [${level:}] - ${ndc}${message}"; memoryTarget = new NLog.Targets.MemoryTarget(); memoryTarget.Layout = layout; var fileTarget = new NLog.Targets.FileTarget(); fileTarget.FileName = "gm-log.txt"; fileTarget.Layout = layout; config.AddRuleForOneLevel(LogLevel.Error, memoryTarget); config.AddRuleForOneLevel(LogLevel.Warn, memoryTarget); config.AddRuleForOneLevel(LogLevel.Info, memoryTarget); config.AddRuleForAllLevels(fileTarget); LogManager.Configuration = config; }
public static NLog.LogFactory BuildNLogFactory(NLogConfiguration configuration = null) { (bool Buffered, bool KeepFileOpen, bool Shared) = configuration ?? new NLogConfiguration(); bool AutoFlush = !Buffered; NLog.Targets.FileTarget fileTarget = new NLog.Targets.FileTarget("audit-log") { FileName = $"./nlog/audit-{DateTime.Now.ToString("yyyyMMddHHmm")}-latest.log", ArchiveFileName = $"./nlog/audit-{DateTime.Now.ToString("yyyyMMddHHmm")}-{{###}}.log", AutoFlush = AutoFlush, KeepFileOpen = KeepFileOpen, ConcurrentWrites = Shared, ArchiveEvery = NLog.Targets.FileArchivePeriod.Day, ArchiveNumbering = NLog.Targets.ArchiveNumberingMode.Rolling, ArchiveAboveSize = 100_000_000, Layout = new NLog.Layouts.JsonLayout { IncludeAllProperties = true, Attributes = { new NLog.Layouts.JsonAttribute("@t", "${longdate}") { Encode = false }, new NLog.Layouts.JsonAttribute("@l", "${level:upperCase=true}") { Encode = false }, new NLog.Layouts.JsonAttribute("@mt", "${message:raw=true}"), } } }; NLog.Config.LoggingConfiguration loggingConfiguration = new NLog.Config.LoggingConfiguration(); loggingConfiguration.AddTarget(fileTarget); loggingConfiguration.AddRuleForOneLevel(NLog.LogLevel.Info, fileTarget); return(new NLog.LogFactory(loggingConfiguration) { ThrowExceptions = true, ThrowConfigExceptions = true, }); }
public static void SetNlogConfig(bool isInfoFromConfig = true) { var config = new NLog.Config.LoggingConfiguration();//NLog.LogManager.Configuration;// //======file================== // Targets where to log to: File var logfileTarget = new NLog.Targets.FileTarget("logfileTarget") { FileName = "C:/Log/${gdc:ProgramName:whenEmpty=Default}/${shortdate}.txt", Layout = "${longdate} ${uppercase:${level}} ${message}" }; //============================ #region db ////======db==================== //DatabaseTarget databaseTarget = new DatabaseTarget("databaseTarget"); //DatabaseParameterInfo param; //databaseTarget.ConnectionString = isInfoFromConfig ? "${configsetting:name=ConnectionStrings.LogConnection}" : Config.GetLogDBConnectionConfig(); ////databaseTarget.DBProvider = "mssql"; ////databaseTarget.DBHost = "."; ////databaseTarget.DBUserName = "******"; ////databaseTarget.DBPassword = "******"; ////databaseTarget.DBDatabase = "databasename"; //databaseTarget.CommandText = "INSERT INTO [dbo].[Log] ([Id] ,[Name] ,[ProgramName] ,[KeyWord] ,[FileName] ,[LogTime] ,[CreateTime] ,[Message]) VALUES(@Id, @Name, @ProgramName, @KeyWord, @FileName, @LogTime, @CreateTime, @Message); "; //param = new DatabaseParameterInfo(); //param.Name = "@Id"; //param.Layout = "${event-properties:item=Id}"; //databaseTarget.Parameters.Add(param); //param = new DatabaseParameterInfo(); //param.Name = "@Name"; //param.Layout = "${event-properties:item=Name}"; //databaseTarget.Parameters.Add(param); //param = new DatabaseParameterInfo(); //param.Name = "@ProgramName"; //param.Layout = "${gdc:ProgramName:whenEmpty=Default}"; //databaseTarget.Parameters.Add(param); //param = new DatabaseParameterInfo(); //param.Name = "@KeyWord"; //param.Layout = "${event-properties:item=KeyWord}"; //databaseTarget.Parameters.Add(param); //param = new DatabaseParameterInfo(); //param.Name = "@FileName"; //param.Layout = "${shortdate}"; //databaseTarget.Parameters.Add(param); //param = new DatabaseParameterInfo(); //param.Name = "@LogTime"; //param.Layout = "${event-properties:item=LogTime}"; ////param.Layout = "${date:universalTime=true}"; //databaseTarget.Parameters.Add(param); //param = new DatabaseParameterInfo(); //param.Name = "@CreateTime"; //param.Layout = "${event-properties:item=CreateTime}"; ////param.Layout = "${date:universalTime=true}"; //databaseTarget.Parameters.Add(param); //param = new DatabaseParameterInfo(); //param.Name = "@Message"; //param.Layout = "${event-properties:item=ExceptionMessage}"; //databaseTarget.Parameters.Add(param); ////============================ #endregion // Rules for mapping loggers to targets (file and db) foreach (var level in levelList) { switch (level) { case LogLevel.Trace: config.AddRuleForOneLevel(NLog.LogLevel.Trace, logfileTarget); break; case LogLevel.Debug: config.AddRuleForOneLevel(NLog.LogLevel.Debug, logfileTarget); break; case LogLevel.Warning: config.AddRuleForOneLevel(NLog.LogLevel.Warn, logfileTarget); break; case LogLevel.Error: config.AddRuleForOneLevel(NLog.LogLevel.Error, logfileTarget); //config.AddRuleForOneLevel(NLog.LogLevel.Error, databaseTarget); break; case LogLevel.Critical: config.AddRuleForOneLevel(NLog.LogLevel.Fatal, logfileTarget); //config.AddRuleForOneLevel(NLog.LogLevel.Fatal, databaseTarget); break; case LogLevel.Information: config.AddRuleForOneLevel(NLog.LogLevel.Info, logfileTarget); break; } } //config.AddRule(NLog.LogLevel.Debug, LogLevel.Fatal, logconsole); // Apply config NLog.LogManager.Configuration = config; }
public NLogger(LogOptions options = null) { options = options ?? new LogOptions { EnableConsoleLog = true }; var config = new NLog.Config.LoggingConfiguration(); if (options.EnableFileLog) { var fileConf = new NLog.Targets.FileTarget("jimuLogFile") { FileName = ".\\log\\${level:lowercase=true}\\${shortdate}.log", ArchiveAboveSize = 10000000, Layout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${level:uppercase=true} ${message}" }; if ((options.FileLogLevel & LogLevel.Error) == LogLevel.Error) { config.AddRuleForOneLevel(NLog.LogLevel.Error, fileConf); } if ((options.FileLogLevel & LogLevel.Warn) == LogLevel.Warn) { //config.AddRuleForOneLevel(NLog.LogLevel.Warn, fileConf); config.AddRule(NLog.LogLevel.Warn, NLog.LogLevel.Error, fileConf); } if ((options.FileLogLevel & LogLevel.Info) == LogLevel.Info) { config.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Error, fileConf); //config.AddRuleForOneLevel(NLog.LogLevel.Info, fileConf); } if ((options.FileLogLevel & LogLevel.Debug) == LogLevel.Debug) { config.AddRule(NLog.LogLevel.Debug, NLog.LogLevel.Error, fileConf); //config.AddRuleForOneLevel(NLog.LogLevel.Debug, fileConf); } } if (options.EnableConsoleLog) { var consoleLog = new NLog.Targets.ConsoleTarget("jimuLogconsole") { Layout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${level:uppercase=true} ${message}" }; if ((options.ConsoleLogLevel & LogLevel.Error) == LogLevel.Error) { config.AddRuleForOneLevel(NLog.LogLevel.Error, consoleLog); } if ((options.ConsoleLogLevel & LogLevel.Warn) == LogLevel.Warn) { config.AddRule(NLog.LogLevel.Warn, NLog.LogLevel.Error, consoleLog); //config.AddRuleForOneLevel(NLog.LogLevel.Warn, consoleLog); } if ((options.ConsoleLogLevel & LogLevel.Info) == LogLevel.Info) { config.AddRule(NLog.LogLevel.Info, NLog.LogLevel.Error, consoleLog); //config.AddRuleForOneLevel(NLog.LogLevel.Info, consoleLog); } if ((options.ConsoleLogLevel & LogLevel.Debug) == LogLevel.Debug) { config.AddRule(NLog.LogLevel.Debug, NLog.LogLevel.Error, consoleLog); //config.AddRuleForOneLevel(NLog.LogLevel.Debug, consoleLog); } } NLog.LogManager.Configuration = config; _logger = NLog.LogManager.GetLogger("jimuLogger"); }
public NLogger(JimuNLogOptions options = null) { options = options ?? new JimuNLogOptions { EnableConsoleLog = true }; if (!string.IsNullOrEmpty(options.Configuration)) { N.LogManager.Configuration = new N.Config.XmlLoggingConfiguration("nlog.config"); } else { var config = new N.Config.LoggingConfiguration(); var ip = JimuHelper.GetLocalIPAddress(); if (options.EnableFileLog) { var fileConf = new N.Targets.FileTarget("jimuLogFile") { FileName = "./log/${level:lowercase=true}/${shortdate}.log", ArchiveAboveSize = 10000000, Layout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${level:uppercase=true} [" + ip + "] ${message}" }; if (options.FileLogPath != null) { fileConf.FileName = options.FileLogPath + "/${level:lowercase=true}/${shortdate}.log"; } if ((options.FileLogLevel & LogLevel.Error) == LogLevel.Error) { config.AddRuleForOneLevel(N.LogLevel.Error, fileConf); } if ((options.FileLogLevel & LogLevel.Warn) == LogLevel.Warn) { config.AddRule(N.LogLevel.Warn, N.LogLevel.Error, fileConf); } if ((options.FileLogLevel & LogLevel.Info) == LogLevel.Info) { config.AddRule(N.LogLevel.Info, N.LogLevel.Error, fileConf); } if ((options.FileLogLevel & LogLevel.Debug) == LogLevel.Debug) { config.AddRule(N.LogLevel.Debug, N.LogLevel.Error, fileConf); } } if (options.EnableConsoleLog) { var consoleLog = new N.Targets.ConsoleTarget("jimuLogconsole") { Layout = @"${date:format=yyyy-MM-dd HH\:mm\:ss.fff} ${level:uppercase=true} [" + ip + "] ${message}" }; if ((options.ConsoleLogLevel & LogLevel.Error) == LogLevel.Error) { config.AddRuleForOneLevel(N.LogLevel.Error, consoleLog); } if ((options.ConsoleLogLevel & LogLevel.Warn) == LogLevel.Warn) { config.AddRule(N.LogLevel.Warn, N.LogLevel.Error, consoleLog); } if ((options.ConsoleLogLevel & LogLevel.Info) == LogLevel.Info) { config.AddRule(N.LogLevel.Info, N.LogLevel.Error, consoleLog); } if ((options.ConsoleLogLevel & LogLevel.Debug) == LogLevel.Debug) { config.AddRule(N.LogLevel.Debug, N.LogLevel.Error, consoleLog); } } N.LogManager.Configuration = config; } _logger = N.LogManager.GetLogger("*", typeof(N.LogManager)); }