/// <summary>
        ///   Starts the application
        /// </summary>
        public static void Start()
        {
            #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"
            };
            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 = new Log4JXmlEventLayout()
            };
            var harvesterRule = new LoggingRule("*", LogLevel.Trace, harvesterTarget);
            LogManager.Configuration.AddTarget("harvester", harvesterTarget);
            LogManager.Configuration.LoggingRules.Add(harvesterRule);

            LogManager.ReconfigExistingLoggers();
            #endif

            // Configure this.Log() for NLog
            Log.InitializeWith<NLogLog>();
        }
Beispiel #2
0
        static Log()
        {
            #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"
              };
              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 = new Log4JXmlEventLayout()
              };
              var harvesterRule = new LoggingRule("*", LogLevel.Trace, harvesterTarget);
              LogManager.Configuration.AddTarget("harvester", harvesterTarget);
              LogManager.Configuration.LoggingRules.Add(harvesterRule);
            #endif

            LogManager.ReconfigExistingLoggers();

            Instance = LogManager.GetCurrentClassLogger();
        }
        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;
        }
Beispiel #4
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;
        }