public void HandleConsoleSink(ConsoleSink _) { var consoleSink = "console-sink-formatter"; var msg = new ConsoleSinkFormatter.MessageQueueStats(_.Payload); Context.Child(consoleSink).GetOrElse(() => Context.ActorOf(ConsoleSinkFormatter.Props(), consoleSink)).Tell(msg); }
public void LogSinkExtensions_GetSinkType() { ConsoleSink sink = new ConsoleSink(); LogSinkTypeAttribute attribute = sink.GetLogSinkType(); Assert.IsNotNull(attribute); Assert.AreEqual("console", attribute.Name); }
public static void FullMode_SetInvalid_Throws() { // Arrange var sink = new ConsoleSink(); var console = new TestConsole(sink); var processor = new ConsoleLoggerProcessor(console, null !, ConsoleLoggerQueueFullMode.Wait, 1024); // Act & Assert Assert.Throws <ArgumentOutOfRangeException>(() => processor.FullMode = (ConsoleLoggerQueueFullMode)10); }
private static (ConsoleLogger Logger, ConsoleSink Sink) SetUp(Func <string, LogLevel, bool> filter, bool includeScopes = false) { // Arrange var sink = new ConsoleSink(); var console = new TestConsole(sink); var logger = new ConsoleLogger(_loggerName, filter, includeScopes, new TestLoggerProcessor()); logger.Console = console; return(logger, sink); }
private Tuple <ConsoleLogger, ConsoleSink> SetUp(Func <string, LogLevel, bool> filter, bool includeScopes = false) { // Arrange var sink = new ConsoleSink(); var console = new TestConsole(sink); var logger = new ConsoleLogger(_loggerName, filter, includeScopes); logger.Console = console; return(new Tuple <ConsoleLogger, ConsoleSink>(logger, sink)); }
/// <summary> /// Subscribes to an <see cref="IObservable{EventEntry}"/> using a <see cref="ConsoleSink"/>. /// </summary> /// <param name="eventStream">The event stream. Typically this is an instance of <see cref="ObservableEventListener"/>.</param> /// <param name="formatter">The formatter.</param> /// <param name="colorMapper">The color mapper instance.</param> /// <returns>A subscription to the sink that can be disposed to unsubscribe the sink, or to get access to the sink instance.</returns> public static SinkSubscription <ConsoleSink> LogToConsole(this IObservable <EventEntry> eventStream, IEventTextFormatter formatter = null, IConsoleColorMapper colorMapper = null) { formatter = formatter ?? new EventTextFormatter(); colorMapper = colorMapper ?? new DefaultConsoleColorMapper(); var sink = new ConsoleSink(formatter, colorMapper); var subscription = eventStream.Subscribe(sink); return(new SinkSubscription <ConsoleSink>(subscription, sink)); }
/// <summary> /// Subscribes to an <see cref="IObservable{EventEntry}"/> using a <see cref="ConsoleSink"/>. /// </summary> /// <param name="eventStream">The event stream. Typically this is an instance of <see cref="ObservableEventListener"/>.</param> /// <param name="formatter">The formatter.</param> /// <param name="colorMapper">The color mapper instance.</param> /// <returns>A subscription to the sink that can be disposed to unsubscribe the sink, or to get access to the sink instance.</returns> public static SinkSubscription<ConsoleSink> LogToConsole(this IObservable<EventEntry> eventStream, IEventTextFormatter formatter = null, IConsoleColorMapper colorMapper = null) { var sink = new ConsoleSink(); formatter = formatter ?? new EventTextFormatter(); colorMapper = colorMapper ?? new DefaultConsoleColorMapper(); var subscription = eventStream.SubscribeWithFormatterAndColor(formatter ?? new EventTextFormatter(), colorMapper, sink); return new SinkSubscription<ConsoleSink>(subscription, sink); }
private static (ConsoleLogger Logger, ConsoleSink Sink) SetUp(Func <string, LogLevel, bool> filter, bool includeScopes = false, bool disableColors = false) { // Arrange var sink = new ConsoleSink(); var console = new TestConsole(sink); var logger = new ConsoleLogger(_loggerName, filter, includeScopes ? new LoggerExternalScopeProvider() : null, new TestLoggerProcessor()); logger.Console = console; logger.DisableColors = disableColors; return(logger, sink); }
private static Tuple <AdvancedConsoleLogger, ConsoleSink> SetUp(Func <string, LogLevel, bool> filter, bool includeScopes = false) { // Arrange var sink = new ConsoleSink(); var console = new TestConsole(sink); var settings = ConsoleLoggerSettings.Default; settings.IncludeScopes = includeScopes; var logger = new AdvancedConsoleLogger(_loggerName, filter, settings); logger.Console = console; return(new Tuple <AdvancedConsoleLogger, ConsoleSink>(logger, sink)); }
internal static (ConsoleLogger Logger, ConsoleSink Sink, ConsoleSink ErrorSink, Func <LogLevel, string> GetLevelPrefix, int WritesPerMsg) SetUp( ConsoleLoggerOptions options = null, SimpleConsoleFormatterOptions simpleOptions = null, ConsoleFormatterOptions systemdOptions = null, JsonConsoleFormatterOptions jsonOptions = null) { // Arrange var sink = new ConsoleSink(); var errorSink = new ConsoleSink(); var console = new TestConsole(sink); var errorConsole = new TestConsole(errorSink); var consoleLoggerProcessor = new TestLoggerProcessor(); consoleLoggerProcessor.Console = console; consoleLoggerProcessor.ErrorConsole = errorConsole; var logger = new ConsoleLogger(_loggerName, consoleLoggerProcessor); logger.ScopeProvider = new LoggerExternalScopeProvider(); logger.Options = options ?? new ConsoleLoggerOptions(); var formatters = new ConcurrentDictionary <string, ConsoleFormatter>(ConsoleLoggerTest.GetFormatters(simpleOptions, systemdOptions, jsonOptions).ToDictionary(f => f.Name)); Func <LogLevel, string> levelAsString; int writesPerMsg; switch (logger.Options.FormatterName) { case ConsoleFormatterNames.Simple: levelAsString = ConsoleLoggerTest.LogLevelAsStringDefault; writesPerMsg = 2; logger.Formatter = formatters[ConsoleFormatterNames.Simple]; break; case ConsoleFormatterNames.Systemd: levelAsString = ConsoleLoggerTest.GetSyslogSeverityString; writesPerMsg = 1; logger.Formatter = formatters[ConsoleFormatterNames.Systemd]; break; case ConsoleFormatterNames.Json: levelAsString = ConsoleLoggerTest.GetJsonLogLevelString; writesPerMsg = 1; logger.Formatter = formatters[ConsoleFormatterNames.Json]; break; default: throw new ArgumentOutOfRangeException(nameof(logger.Options.FormatterName)); } return(logger, sink, errorSink, levelAsString, writesPerMsg); }
public void AddProduct(ProductAddDTO Data) { ConsoleSink sink = new ConsoleSink(this._Sink, ConsoleColor.Red); ProductService svc = new ProductService(_ConnectionString, sink); if (svc.Add(Data)) { Console.WriteLine("-- ! WebApi Singapore Say Success Add Product" + Environment.NewLine); } else { Console.WriteLine("-- ! WebApi Singapore Say Failed Add Product" + Environment.NewLine); } }
private (AdvancedConsoleLogger logger, ConsoleSink sink) SetUp( Func <string, LogLevel, bool> filter, ConsoleLoggerSettings settings) { // Arrange var sink = new ConsoleSink(); var console = new TestConsole(sink); var logger = new AdvancedConsoleLogger(_loggerName, filter, settings); logger.Console = console; return(logger, sink); }
internal static (ConsoleLogger Logger, ConsoleSink Sink, ConsoleSink ErrorSink, Func <LogLevel, string> GetLevelPrefix, int WritesPerMsg) SetUp( ConsoleLoggerOptions options = null, SimpleConsoleFormatterOptions simpleOptions = null, ConsoleFormatterOptions systemdOptions = null, JsonConsoleFormatterOptions jsonOptions = null) { // Arrange var sink = new ConsoleSink(); var errorSink = new ConsoleSink(); var console = new TestConsole(sink); var errorConsole = new TestConsole(errorSink); var bufferMode = options == null ? ConsoleLoggerQueueFullMode.Wait : options.QueueFullMode; var maxQueueLength = options == null ? ConsoleLoggerOptions.DefaultMaxQueueLengthValue : options.MaxQueueLength; var consoleLoggerProcessor = new TestLoggerProcessor(console, errorConsole, bufferMode, maxQueueLength); var formatters = new ConcurrentDictionary <string, ConsoleFormatter>(ConsoleLoggerTest.GetFormatters(simpleOptions, systemdOptions, jsonOptions).ToDictionary(f => f.Name)); ConsoleFormatter?formatter = null; var loggerOptions = options ?? new ConsoleLoggerOptions(); Func <LogLevel, string> levelAsString; int writesPerMsg; switch (loggerOptions.FormatterName) { case ConsoleFormatterNames.Simple: levelAsString = ConsoleLoggerTest.LogLevelAsStringDefault; writesPerMsg = 2; formatter = formatters[ConsoleFormatterNames.Simple]; break; case ConsoleFormatterNames.Systemd: levelAsString = ConsoleLoggerTest.GetSyslogSeverityString; writesPerMsg = 1; formatter = formatters[ConsoleFormatterNames.Systemd]; break; case ConsoleFormatterNames.Json: levelAsString = ConsoleLoggerTest.GetJsonLogLevelString; writesPerMsg = 1; formatter = formatters[ConsoleFormatterNames.Json]; break; default: throw new ArgumentOutOfRangeException(nameof(loggerOptions.FormatterName)); } var logger = new ConsoleLogger(_loggerName, consoleLoggerProcessor, formatter, new LoggerExternalScopeProvider(), loggerOptions); return(logger, sink, errorSink, levelAsString, writesPerMsg); }
public void LogAfterDisposeWritesLog() { // Arrange var sink = new ConsoleSink(); var console = new TestConsole(sink); var processor = new ConsoleLoggerProcessor(); var logger = new ConsoleLogger(_loggerName, filter: null, includeScopes: false, loggerProcessor: processor); logger.Console = console; // Act processor.Dispose(); logger.LogInformation("Logging after dispose"); // Assert Assert.True(sink.Writes.Count == 2); }
private static (ConsoleLogger Logger, ConsoleSink Sink, ConsoleSink ErrorSink) SetUp(ConsoleLoggerOptions options = null) { // Arrange var sink = new ConsoleSink(); var errorSink = new ConsoleSink(); var console = new TestConsole(sink); var errorConsole = new TestConsole(errorSink); var consoleLoggerProcessor = new TestLoggerProcessor(); consoleLoggerProcessor.Console = console; consoleLoggerProcessor.ErrorConsole = errorConsole; var logger = new ConsoleLogger(_loggerName, consoleLoggerProcessor); logger.ScopeProvider = new LoggerExternalScopeProvider(); logger.Options = options ?? new ConsoleLoggerOptions(); return(logger, sink, errorSink); }
public static void Main(string[] args) { var sink = new ConsoleSink(); var chooser = new ConsoleChooser(); var envParams = new EnvParams(); using (var ci = new CommandInterface(sink, chooser, envParams)) { Console.CancelKeyPress += (x, y) => { y.Cancel = true; ci.Cancel(); }; //// If errors occured while parsing switches //// then treat this an exit condition. bool isExit; ci.DoOptions(out isExit); if (isExit || sink.PrintedError) { Environment.ExitCode = sink.PrintedError ? 1 : 0; return; } string line; while (true) { //// Because pressing CTRL-C may return a null line line = Console.ReadLine(); line = line == null ? string.Empty : line.Trim(); if (line == CommandInterface.ExitCommand || line == CommandInterface.ExitShortCommand) { Environment.ExitCode = sink.PrintedError ? 1 : 0; return; } ci.DoCommand(line); } } }
public void LogAfterDisposeWritesLog() { // Arrange var sink = new ConsoleSink(); var console = new TestConsole(sink); var processor = new ConsoleLoggerProcessor(console, null !, ConsoleLoggerQueueFullMode.Wait, 1024); var logger = new ConsoleLogger(_loggerName, loggerProcessor: processor, new SimpleConsoleFormatter(new TestFormatterOptionsMonitor <SimpleConsoleFormatterOptions>(new SimpleConsoleFormatterOptions())), null, new ConsoleLoggerOptions()); Assert.Null(logger.Options.FormatterName); UpdateFormatterOptions(logger.Formatter, logger.Options); // Act processor.Dispose(); logger.LogInformation("Logging after dispose"); // Assert Assert.Equal(2, sink.Writes.Count); }
private static (ConsoleLogger Logger, ConsoleSink Sink, ConsoleSink ErrorSink, Func <LogLevel, string> GetLevelPrefix, int WritesPerMsg) SetUp(ConsoleLoggerOptions options = null) { // Arrange var sink = new ConsoleSink(); var errorSink = new ConsoleSink(); var console = new TestConsole(sink); var errorConsole = new TestConsole(errorSink); var consoleLoggerProcessor = new TestLoggerProcessor(); consoleLoggerProcessor.Console = console; consoleLoggerProcessor.ErrorConsole = errorConsole; var logger = new ConsoleLogger(_loggerName, consoleLoggerProcessor); logger.ScopeProvider = new LoggerExternalScopeProvider(); logger.Options = options ?? new ConsoleLoggerOptions(); Func <LogLevel, string> levelAsString; int writesPerMsg; switch (logger.Options.Format) { case ConsoleLoggerFormat.Default: levelAsString = LogLevelAsStringDefault; writesPerMsg = 2; break; case ConsoleLoggerFormat.Systemd: levelAsString = GetSyslogSeverityString; writesPerMsg = 1; break; default: throw new ArgumentOutOfRangeException(nameof(logger.Options.Format)); } return(logger, sink, errorSink, levelAsString, writesPerMsg); }
public void CheckForNotificationWhenQueueIsFull(bool okToDrop) { // Arrange var sink = new ConsoleSink(); var console = new TestConsole(sink); var errorConsole = new TimesWriteCalledConsole(); string queueName = nameof(CheckForNotificationWhenQueueIsFull) + (okToDrop ? "InDropWriteMode" : "InWaitMode"); var fullMode = okToDrop ? ConsoleLoggerQueueFullMode.DropWrite : ConsoleLoggerQueueFullMode.Wait; var processor = new ConsoleLoggerProcessor(console, errorConsole, fullMode, maxQueueLength: 1); var formatter = new SimpleConsoleFormatter(new TestFormatterOptionsMonitor <SimpleConsoleFormatterOptions>( new SimpleConsoleFormatterOptions())); var logger = new ConsoleLogger(_loggerName, processor, formatter, null, new ConsoleLoggerOptions()); Assert.Null(logger.Options.FormatterName); UpdateFormatterOptions(logger.Formatter, logger.Options); string messageTemplate = string.Join(", ", Enumerable.Range(1, 100).Select(x => "{A" + x + "}")); object[] messageParams = Enumerable.Range(1, 100).Select(x => (object)x).ToArray(); // Act for (int i = 0; i < 20000; i++) { logger.LogInformation(messageTemplate, messageParams); } // Assert if (okToDrop) { Assert.True(errorConsole.TimesWriteCalled > 0); } else { Assert.Equal(0, errorConsole.TimesWriteCalled); } }
private string GetMessage(ConsoleSink sink, int messageIndex, int?writesCount = null) { int count = writesCount ?? _writesPerMsgDefault; return(GetMessage(sink.Writes.GetRange(messageIndex * count, count))); }
public ConsoleLogger(ILoggerSink sink) { _Sink = sink as ConsoleSink; }