Hi,
Here, an simple example of use of logging platform NLog in C# projects. Or course, you need add reference to Nlog package in your project via NuGet Package Manager.
NLog is a free logging platform for .NET, NETSTANDARD, Xamarin, Silverlight and Windows Phone with rich log routing and management capabilities. NLog makes it easy to produce and manage high-quality logs for your application regardless of its size or complexity.
using System; using NLog; using NLog.Config; using NLog.Targets; using System.IO; using System.Collections.ObjectModel; using NLog.Layouts; namespace HuoBlog.Logging { public static class LoggerService { private static Logger logger; private static readonly string LOGGER_TARGET_FILE_NAME = "file"; public static string ForceNewLoggerFile(string logFilePath = null) { logger = null; GetLogger(logFilePath); return GetLogFilePath(); } public static string GetLogFilePath() { string logFilePath = null; if(logger != null) { foreach (Target target in LogManager.Configuration.AllTargets) { if (target.GetType() == typeof(FileTarget) && ((FileTarget)target).FileName.GetType() == typeof(SimpleLayout)) { SimpleLayout layout = (SimpleLayout) ((FileTarget)target).FileName; return layout.Text; } } } return logFilePath; } private static Logger GetLogger(string logFilePath = null) { if (logger == null) { // Log file { if(logFilePath == null) // Generate a logfile { // OLD : //string outputPath = Path.Combine(Environment.CurrentDirectory, "output"); //if (!Directory.Exists(outputPath)) // Directory.CreateDirectory(Path.Combine(Environment.CurrentDirectory, "output")); // NEW: string outputPath = Environment.CurrentDirectory; logFilePath = Path.Combine(outputPath, "HuoBlog_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".log"); } } // Config logger { var config = new LoggingConfiguration(); var fileTarget = new FileTarget(); fileTarget.FileName = logFilePath; fileTarget.Layout = "${message}"; config.AddTarget(LOGGER_TARGET_FILE_NAME, fileTarget); config.LoggingRules.Add(new LoggingRule("*", LogLevel.Info, fileTarget)); LogManager.Configuration = config; } logger = LogManager.GetLogger("Extract"); } return logger; } public static void Info(string message) { GetLogger().Info("INFO: " + message); } public static void Warn(string message) { GetLogger().Warn("WARNING: " + message); } public static void Error(string message) { GetLogger().Error("ERROR: " + message); } public static void Print(string message) { GetLogger().Info(message); } } }
….
try{ string logFilePath = LoggerService.ForceNewLoggerFile(); // ... LoggerService.Info("############ HuoBlog - Started at " + DateTime.Now); LoggerService.Print("\n\n"); // ... } catch (Exception ex) { LoggerService.Error(ex.ToString()); } finally { LoggerService.Info("############ HuoBlog - ended at " + DateTime.Now); // ... string logFileContent = File.ReadAllText(LoggerService.GetLogFilePath()); // ... }
C:\Workspaces\MS_Visual_Studio_Projects\…\bin\Debug\output\HuoBlog_20171120165730.log.
That’s all!!
Huseyin