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()); }
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."); }
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); }
/// <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); }