Пример #1
0
    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");
    }
Пример #2
0
        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;
        }
Пример #3
0
        /// <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();
        }
Пример #4
0
        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;
        }
Пример #5
0
        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;
        }
Пример #6
0
        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();
        }