コード例 #1
0
 private AnankeSettings(TimeSpan maximumRuntime, ILoggerFactory loggerFactory, TimeSpan exitTimeout,
                        double randomMaximumRuntimeRelativeDelta,
                        StdoutParser stdoutParser, IStringLog consoleLog, IExitProcessService exitProcessService,
                        ISignalService signalService)
 {
     MaximumRuntime = maximumRuntime;
     LoggerFactory  = loggerFactory;
     ExitTimeout    = exitTimeout;
     RandomMaximumRuntimeRelativeDelta = randomMaximumRuntimeRelativeDelta;
     StdoutParser       = stdoutParser;
     ConsoleLog         = consoleLog;
     ExitProcessService = exitProcessService;
     SignalService      = signalService;
 }
コード例 #2
0
        internal static AnankeSettings InternalCreate(TimeSpan?maximumRuntime = null, ILoggerFactory loggerFactory = null,
                                                      LoggerIsEnabledFilter loggerIsEnabledFilter = null, LoggerFormatter loggerFormatter = null,
                                                      TimeSpan?exitTimeout  = null, double?randomMaximumRuntimeRelativeDelta = null, StdoutParser stdoutParser = null,
                                                      IStringLog consoleLog = null,
                                                      IExitProcessService exitProcessService = null, ISignalService signalService = null)
        {
            if (signalService == null)
            {
                if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
                {
                    signalService = new WindowsSignalService();
                }
                else
                {
                    signalService = new UnixSignalService();
                }
            }

            consoleLog            = consoleLog ?? new TextWriterStringLog(Console.Out);
            loggerFormatter       = loggerFormatter ?? AnankeFormatters.FormattedText;
            loggerIsEnabledFilter = loggerIsEnabledFilter ?? ((_, __) => true);
            var loggerProvider = new AnankeLoggerProvider(consoleLog, loggerFormatter, loggerIsEnabledFilter);

            if (loggerFactory == null)
            {
                loggerFactory = new LoggerFactory();
                loggerFactory.AddProvider(loggerProvider);
            }

            return(new AnankeSettings(maximumRuntime ?? Timeout.InfiniteTimeSpan,
                                      loggerFactory,
                                      exitTimeout ?? TimeSpan.FromSeconds(10),
                                      randomMaximumRuntimeRelativeDelta ?? 0.10,
                                      stdoutParser ?? ((message, provider) => provider.CreateLogger("App").LogInformation(message)),
                                      consoleLog,
                                      exitProcessService ?? new ExitProcessService(),
                                      signalService));
        }
コード例 #3
0
 /// <summary>
 /// Creates an instance of <see cref="AnankeSettings"/>, with default settings for any setting not specified.
 /// </summary>
 /// <param name="maximumRuntime">The amount of time application code should run until it is requested to exit. Defaults to infinite, but most apps should use a non-infinite time.</param>
 /// <param name="loggerFactory">The core logging factory used by all structured logging. Defaults to a logging factory with a single provider that writes formatted text to <see cref="ConsoleLog"/>.</param>
 /// <param name="loggerIsEnabledFilter">The filter used by the <see cref="AnankeLoggerProvider"/> if <paramref name="loggerFactory"/> is <c>null</c>.</param>
 /// <param name="loggerFormatter">The formatter used by the <see cref="AnankeLoggerProvider"/> if <paramref name="loggerFactory"/> is <c>null</c>.</param>
 /// <param name="exitTimeout">The amount of time application code has after it is requested to exit, before the process forcibly exits. Defaults to 10 seconds.</param>
 /// <param name="randomMaximumRuntimeRelativeDelta">The amount of random fluction in <see cref="MaximumRuntime"/>. E.g., <c>0.10</c> is a 10% change; if <see cref="MaximumRuntime"/> is 30 minutes, then the actual maximum runtime would be a random value between 27 and 33 minutes. Defaults to 0.10 (10%).</param>
 /// <param name="stdoutParser">A method that parses text written to stdout.</param>
 public static AnankeSettings Create(TimeSpan?maximumRuntime = null, ILoggerFactory loggerFactory = null,
                                     LoggerIsEnabledFilter loggerIsEnabledFilter = null, LoggerFormatter loggerFormatter = null,
                                     TimeSpan?exitTimeout = null, double?randomMaximumRuntimeRelativeDelta = null, StdoutParser stdoutParser = null)
 {
     return(InternalCreate(maximumRuntime, loggerFactory, loggerIsEnabledFilter, loggerFormatter,
                           exitTimeout, randomMaximumRuntimeRelativeDelta, stdoutParser));
 }
コード例 #4
0
 /// <summary>
 /// Creates a string log that writes to loggers provided by the given logger provider.
 /// </summary>
 /// <param name="loggerFactory">The logger provider.</param>
 /// <param name="stdoutParser">The parser to determine how to log messages.</param>
 public LoggingStringLog(ILoggerFactory loggerFactory, StdoutParser stdoutParser)
 {
     m_loggerFactory = loggerFactory;
     m_stdoutParser  = stdoutParser;
 }