static void Main(string[] args) { OutputDebugStringTarget target = new OutputDebugStringTarget(); target.Layout = "${message}"; NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(target, LogLevel.Debug); Logger logger = LogManager.GetLogger("Example"); logger.Debug("log message"); }
private static void SetupDebugLogging() { var config = new LoggingConfiguration(); // console target var consoleTarget = new ColoredConsoleTarget() { Layout = @"${date:format=HH\\:MM\\:ss} ${logger} ${message}" }; config.AddTarget("console", consoleTarget); // debugger out target var debugOutTarget = new OutputDebugStringTarget() { Layout = @"[${logger} ${date:format=HH\\:MM\\:ss}] ${message}" }; config.AddTarget("debug", debugOutTarget); // file target var fileTarget = new FileTarget() { FileName = "${basedir}/log.txt", DeleteOldFileOnStartup = true, EnableFileDelete = true, Layout = "${longdate} - ${message}" }; config.AddTarget("file", fileTarget); var ruleConsole = new LoggingRule("*", LogLevel.Debug, consoleTarget); config.LoggingRules.Add(ruleConsole); var ruleDebugOut = new LoggingRule("*", LogLevel.Debug, debugOutTarget); config.LoggingRules.Add(ruleDebugOut); var ruleFile = new LoggingRule("*", LogLevel.Trace, fileTarget); config.LoggingRules.Add(ruleFile); LogManager.Configuration = config; }
/// <summary> /// Log Routine - Setup some basic configuration for NLog /// Also includes the configuration of Sentinel /// </summary> static Log() { #region DEBUG STUFF #if DEBUG // Setup the logging view for Sentinel - http://sentinel.codeplex.com var sentinalTarget = new NLogViewerTarget() { Name = "sentinal", Address = "udp://127.0.0.1:9999", IncludeNLogData = false }; var sentinalRule = new LoggingRule("*", LogLevel.Trace, sentinalTarget); LogManager.Configuration.AddTarget("sentinal", sentinalTarget); LogManager.Configuration.LoggingRules.Add(sentinalRule); // Setup the logging view for Harvester - http://harvester.codeplex.com var harvesterTarget = new OutputDebugStringTarget() { Name = "harvester", Layout = "${log4jxmlevent:includeNLogData=false}" }; var harvesterRule = new LoggingRule("*", LogLevel.Trace, harvesterTarget); LogManager.Configuration.AddTarget("harvester", harvesterTarget); LogManager.Configuration.LoggingRules.Add(harvesterRule); #endif #endregion // Setup the logging view for Sentinel - http://sentinel.codeplex.com var sentinalTarget = new NLogViewerTarget() { Name = Properties.Settings.Default.SentinelTarget, Address = $"{Properties.Settings.Default.SentinelProtocol}://{Properties.Settings.Default.SentinelHost}:{Properties.Settings.Default.SentinelPort}", IncludeNLogData = Properties.Settings.Default.SentinelNLogData }; var sentinalRule = new LoggingRule("*", LogLevel.Trace, sentinalTarget); LogManager.Configuration.AddTarget(Properties.Settings.Default.SentinelTarget, sentinalTarget); LogManager.Configuration.LoggingRules.Add(sentinalRule); LogManager.ReconfigExistingLoggers(); Instance = LogManager.GetCurrentClassLogger(); }
static Log() { CurrentLogDirectory = Path.Combine(DataLocation.DataDirectory(), DirectoryName, Constant.Version); if (!Directory.Exists(CurrentLogDirectory)) { Directory.CreateDirectory(CurrentLogDirectory); } var configuration = new LoggingConfiguration(); const string layout = @"${date:format=HH\:mm\:ss.ffffK} - " + @"${level:uppercase=true:padding=-5} - ${logger} - ${message:l}" + @"${onexception:${newline}" + @"EXCEPTION OCCURS\: ${exception:format=tostring}${newline}}"; var fileTarget = new FileTarget { FileName = CurrentLogDirectory.Replace(@"\", "/") + "/${shortdate}.txt", Layout = layout }; var fileTargetASyncWrapper = new AsyncTargetWrapper(fileTarget); var debugTarget = new OutputDebugStringTarget { Layout = layout }; configuration.AddTarget("file", fileTargetASyncWrapper); configuration.AddTarget("debug", debugTarget); #if DEBUG var fileRule = new LoggingRule("*", LogLevel.Debug, fileTargetASyncWrapper); var debugRule = new LoggingRule("*", LogLevel.Debug, debugTarget); configuration.LoggingRules.Add(debugRule); #else var fileRule = new LoggingRule("*", LogLevel.Info, fileTargetASyncWrapper); #endif configuration.LoggingRules.Add(fileRule); LogManager.Configuration = configuration; }
internal static void InitNLog() { var config = new LoggingConfiguration(); try { ConfigurationItemFactory.Default = new ConfigurationItemFactory(); foreach (var type in typeof(Logger).Assembly.GetTypes()) { ConfigurationItemFactory.Default.RegisterType(type, string.Empty); } } catch (ReflectionTypeLoadException rtle) { // NLog has a bug that manifests itself on .NET framework 2.0 with no service pack // wherein when it does its own type registering, it can't handle types that depend // on a type in an assembly that hasn't been loaded yet. // See: http://nlog-project.org/forum#nabble-td5542525 // Also: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.gettypes.aspx // Start over with a fresh ConfigurationItemFactory ConfigurationItemFactory.Default = new ConfigurationItemFactory(); foreach (var type in rtle.Types) { if (type != null) { ConfigurationItemFactory.Default.RegisterType(type, string.Empty); } } } ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("dateutc", typeof(DateUtcLayoutRenderer)); ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("messagewithexceptioninfo", typeof(MessageWithExceptionInfoLayoutRenderer)); var versionString = Assembly.GetExecutingAssembly().GetName().Version.ToString(); var basicLayout = "[${dateutc}] DesktopBootstrap-" + versionString + ": ${level}: ${messagewithexceptioninfo}"; var rootLogDir = LibraryIO.FindWritableDirectory(CommonDirectories.LocalAppData, CommonDirectories.CurrentExecutingDirectory, CommonDirectories.Temp); // Create targets and rules var outputDebugStringTarget = new OutputDebugStringTarget(); outputDebugStringTarget.Layout = basicLayout; config.AddTarget("outputdebugstring", outputDebugStringTarget); if (Library.IsDebugMode()) { config.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, outputDebugStringTarget)); } var consoleTarget = new ColoredConsoleTarget(); consoleTarget.Layout = basicLayout; config.AddTarget("console", consoleTarget); if (Debugger.IsAttached) { config.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, consoleTarget)); } if (rootLogDir != null) { var basicLogFileTarget = new FileTarget(); var logDirectory = Path.Combine(rootLogDir, "Logs"); basicLogFileTarget.FileName = Path.Combine(logDirectory, "DesktopBootstrap.log"); basicLogFileTarget.ArchiveFileName = Path.Combine(logDirectory, "DesktopBootstrap-{#}.log"); basicLogFileTarget.ArchiveAboveSize = 1024 * 1024; // 1 MB basicLogFileTarget.ArchiveNumbering = ArchiveNumberingMode.Rolling; basicLogFileTarget.MaxArchiveFiles = 14; basicLogFileTarget.Encoding = UTF8Encoding.UTF8; basicLogFileTarget.ConcurrentWrites = false; basicLogFileTarget.KeepFileOpen = false; basicLogFileTarget.Layout = basicLayout; config.AddTarget("file", basicLogFileTarget); config.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, basicLogFileTarget)); var errorLogFileTarget = new FileTarget(); var errorLogDirectory = Path.Combine(rootLogDir, "ErrorLogs"); errorLogFileTarget.FileName = Path.Combine(logDirectory, "DesktopBootstrapError.log"); errorLogFileTarget.ArchiveFileName = Path.Combine(logDirectory, "DesktopBootstrapError-{#}.log"); errorLogFileTarget.ArchiveAboveSize = 1024 * 1024; // 1 MB errorLogFileTarget.ArchiveNumbering = ArchiveNumberingMode.Rolling; errorLogFileTarget.MaxArchiveFiles = 14; errorLogFileTarget.Encoding = UTF8Encoding.UTF8; errorLogFileTarget.ConcurrentWrites = true; errorLogFileTarget.KeepFileOpen = false; errorLogFileTarget.Layout = basicLayout; config.AddTarget("errorfile", errorLogFileTarget); config.LoggingRules.Add(new LoggingRule("*", LogLevel.Error, errorLogFileTarget)); } // Activate the configuration LogManager.ThrowExceptions = false; // swallow logging exceptions LogManager.Configuration = config; }
public static void SetupLogger(KeyedCollection <string, ConfigParameter> configParameters) { var settingsProvider = InterfaceManager.GetProviderOrDefault <ISettingsProvider>(); LoggingConfiguration logConfiguration; // Implementation will handle its own logging if (settingsProvider?.HandleOwnLogConfiguration ?? false) { logConfiguration = settingsProvider?.GetCustomLogConfiguration(configParameters); LogManager.Configuration = logConfiguration; LogManager.ReconfigExistingLoggers(); return; } logConfiguration = new LoggingConfiguration(); LogLevel level = LogLevel.Info; if (configParameters.Contains(LogLevelParameterName)) { string value = configParameters[LogLevelParameterName].Value; if (value != null) { level = LogLevel.FromString(value); } } if (level == LogLevel.Trace) { OutputDebugStringTarget odsTarget = new OutputDebugStringTarget(); logConfiguration.AddTarget("ods", odsTarget); LoggingRule odsRule = new LoggingRule("*", level, odsTarget); logConfiguration.LoggingRules.Add(odsRule); } EventLogTarget eventLogTarget = new EventLogTarget(); eventLogTarget.Source = settingsProvider?.ManagementAgentName ?? "Lithnet Ecma2 Framework"; eventLogTarget.Category = settingsProvider?.ManagementAgentName ?? "Lithnet Ecma2 Framework"; eventLogTarget.Layout = "${message}${newline}${exception:format=ToString}"; LoggingRule eventLogRule = new LoggingRule("*", LogLevel.Warn, eventLogTarget); logConfiguration.LoggingRules.Add(eventLogRule); if (configParameters.Contains(LogFileParameterName) && !string.IsNullOrWhiteSpace(configParameters[LogFileParameterName].Value)) { FileTarget fileTarget = new FileTarget(); logConfiguration.AddTarget("file", fileTarget); fileTarget.FileName = configParameters[LogFileParameterName].Value; fileTarget.Layout = "${longdate}|[${threadid:padding=4}]|${level:uppercase=true:padding=5}|${message}${exception:format=ToString}"; fileTarget.ArchiveEvery = FileArchivePeriod.Day; fileTarget.ArchiveNumbering = ArchiveNumberingMode.Date; if (configParameters.Contains(LogDaysParameterName) && int.TryParse(configParameters[LogDaysParameterName].Value, out int days)) { fileTarget.MaxArchiveFiles = days; } else { fileTarget.MaxArchiveFiles = 7; } LoggingRule rule2 = new LoggingRule("*", level, fileTarget); logConfiguration.LoggingRules.Add(rule2); } LogManager.Configuration = logConfiguration; LogManager.ReconfigExistingLoggers(); }