Пример #1
0
        public void WritesFormattedMessageToTextWriter(LogSeverity severity, string message, bool includeException, string expectedText)
        {
            StringWriter writer = new StringWriter();

            writer.NewLine = "\n";
            var logger = new SeverityPrefixLogger(new TextLogger(writer));

            logger.Log(severity, message, includeException ? new Exception("Foo") : null);

            Assert.AreEqual(expectedText, writer.ToString());
        }
Пример #2
0
        public void ToleratesAppDomainUnload()
        {
            StringWriter logWriter = new StringWriter();
            var          logger    = new SeverityPrefixLogger(new TextLogger(logWriter));

            var hostFactory = (IsolatedAppDomainHostFactory)RuntimeAccessor.ServiceLocator.ResolveByComponentId(IsolatedAppDomainHostFactory.ComponentId);

            using (IHost host = hostFactory.CreateHost(new HostSetup(), logger))
            {
                HostAssemblyResolverHook.InstallCallback(host);

                host.GetHostService().Do <object, object>(RemoteCallback, null);
            }

            Assert.AreEqual("", logWriter.ToString(),
                            "A dangling Db4o client may have caused the AppDomain.Unload to fail.  Check the DomainUnload event handling policy for the client.");
        }
Пример #3
0
        public void LoggerAndParserAreSymmetrical(LogSeverity severity)
        {
            const string message = "Message";

            StringWriter writer = new StringWriter();

            writer.NewLine = "\n";
            var logger = new SeverityPrefixLogger(new TextLogger(writer));

            logger.Log(severity, message);

            var parser = new SeverityPrefixParser();

            LogSeverity parsedSeverity;
            string      parsedMessage;
            bool        hasSeverity = parser.ParseLine(writer.ToString().Trim(), out parsedSeverity, out parsedMessage);

            Assert.AreEqual(severity, parsedSeverity);
            Assert.AreEqual(message, parsedMessage);
            Assert.IsTrue(hasSeverity);
        }
Пример #4
0
        /// <inheritdoc />
        protected override int RunImpl(string[] args)
        {
            if (!ParseArguments(args))
            {
                ShowHelp();
                return(1);
            }

            if (Arguments.Help)
            {
                ShowHelp();
                return(0);
            }

            if (!ValidateArguments())
            {
                ShowHelp();
                return(1);
            }

            ILogger logger = Arguments.Quiet ? NullLogger.Instance : (ILogger) new RichConsoleLogger(Console);

            if (Arguments.SeverityPrefix)
            {
                logger = new SeverityPrefixLogger(logger);
            }

            /* Already reported via other means.  The duplication is distracting.
             * UnhandledExceptionPolicy.ReportUnhandledException += (sender, e) =>
             * {
             *  if (! e.IsRecursive)
             *      logger.Log(LogSeverity.Error, String.Format("Unhandled exception: {0}", e.GetDescription()));
             * };
             */

            logger.Log(LogSeverity.Info, String.Format("Host started at {0}.", DateTime.Now));

            logger.Log(LogSeverity.Info, String.Format("Running under {0} {1} runtime.",
                                                       DotNetRuntimeSupport.RuntimeType, DotNetRuntimeSupport.RuntimeVersion));

            bool fatal = false;

            try
            {
                if (Arguments.Debug)
                {
                    RunEndpointWithDebugger(logger);
                }
                else
                {
                    RunEndpoint(logger);
                }
            }
            catch (Exception ex)
            {
                logger.Log(LogSeverity.Error, String.Format("Fatal exception: {0}", ExceptionUtils.SafeToString(ex)));
                fatal = true;
            }

            logger.Log(LogSeverity.Info, String.Format("Host stopped at {0}.", DateTime.Now));

            ForceExit(fatal);
            return(0);
        }