/// <summary> /// Formats and writes <paramref name="entries" /> to <paramref name="textWriter" />. /// </summary> /// <param name="entries"></param> /// <param name="textWriter"></param> /// <param name="entryFormatter"></param> /// <typeparam name="TEntry"></typeparam> public static void WriteEntriesTo <TEntry>(this IEnumerable <TEntry> entries, TextWriter textWriter, EntryFormatter <TEntry> entryFormatter = null) where TEntry : ILogEntry { Contract.Requires <ArgumentNullException>(entries != null); Contract.Requires <ArgumentNullException>(textWriter != null); if (entryFormatter == null) { // Try creating the default log formatter entryFormatter = DefaultFormatterAttribute.GetDefaultFormatterFor <TEntry>(); if (entryFormatter == null) { throw new ArgumentNullException(nameof(entryFormatter), $"No [DefaultFormatter] could be found for entry type {typeof(TEntry).FullName}, so logFormatter argument must be set."); } } var setupLog = new SetupLog(); var formatWriter = new TextWriterFormatWriter(setupLog, textWriter, disposeWriter: false); var logWriter = new TextLogWriter(setupLog, formatWriter); logWriter.AddFormat(entryFormatter); IEntryWriter <TEntry> entryWriter; logWriter.TryGetEntryWriter(out entryWriter); using (logWriter) { logWriter.Start(); for (var enumerator = entries.GetEnumerator(); enumerator.MoveNext();) { TEntry logEntry = enumerator.Current; entryWriter.Write(ref logEntry); } } }
public ReflectionFormatterTests(ITestOutputHelper testOutput) { _testOutput = testOutput; _setupLog = new SetupLog(); _formatterOutput = new StringWriter(); _formatWriter = new TextWriterFormatWriter(_setupLog, _formatterOutput); _reflectionFormatter = new ReflectionFormatter { // Excluded for most tests, b/c type names make the output messy IncludeTypeNames = false }; }
public void WriteLinesStringBuilderWorks(string lines, int indentLevel, string expectedOutput) { // Prepare var setupLog = new SetupLog(); var sbOut = new StringBuilder(); var textWriter = new StringWriter(sbOut); using (var formatWriter = new TextWriterFormatWriter(setupLog, textWriter)) { // Test formatWriter.WriteLines(new StringBuilder(lines), relativeIndentLevel: indentLevel); } // Verify Assert.Equal(expectedOutput, sbOut.ToString()); }
public void WriteTimeOffsetWorks(double milliseconds, string expectedOutput) { // Prepare var setupLog = new SetupLog(); var sbOut = new StringBuilder(); var textWriter = new StringWriter(sbOut); using (var formatWriter = new TextWriterFormatWriter(setupLog, textWriter)) { // Test var timeOffset = TimeSpan.FromMilliseconds(milliseconds); formatWriter.WriteTimeOffset(timeOffset, ColorCategory.None); } // Verify Assert.Equal(expectedOutput, sbOut.ToString()); }