示例#1
0
        public static Serilog.ILogger Setup(IEncompassConfig config)
        {
            lock (syncRoot)
            {
                if (configured)
                {
                    throw new Exception("Already Setup for this AppDomain.");
                }

                try
                {
                    var baseLogger = new LoggerConfiguration()
                                     .WriteTo.Logger(aa => aa.MinimumLevel.Verbose())
                                     .Enrich.FromLogContext()
                                     .Enrich.WithExceptionDetails()
                                     .Enrich.WithMachineName()
                                     .Enrich.WithProcessId()
                                     .Enrich.WithEnvironmentUserName()
                                     .Enrich.WithProcessName()
                                     .Enrich.WithAssemblyName()
                                     .Enrich.WithAssemblyVersion();

                    baseLogger.WriteTo.Logger(aa => aa.Destructure.ToMaximumDepth(20));

                    if (config.GetValue(Logging.Logger.ELASTICSEARCH_ENABLED, false))
                    {
                        baseLogger.WriteTo.Elasticsearch(SerilogHelpers.GetElasticOptions(config));
                    }

                    if (config.GetValue(Logging.Logger.FILE_ENABLED, false))
                    {
                        baseLogger.WriteTo.RollingFile(pathFormat: config.GetValue(
                                                           Logging.Logger.FILE_FOLDER, config.GetValue(Logging.Logger.FILE_NAME)),
                                                       formatter: new JsonFormatter(renderMessage: false),
                                                       fileSizeLimitBytes: config.GetValue(Logging.Logger.FILE_MAX_FILE_BYTES, 10000),
                                                       retainedFileCountLimit: config.GetValue(Logging.Logger.FILE_MAX_FILES, 10));
                    }

                    if (config.GetValue(Logging.Logger.LOGGLY_ENABLED, false))
                    {
                        LogEventLevel eventLevel = SetLogglyEventLevelFromConfig(config);
                        baseLogger.WriteTo.Loggly(logglyConfig: SerilogHelpers.GetLogglyConfig(config), formatProvider: CultureInfo.CurrentCulture,
                                                  restrictedToMinimumLevel: eventLevel);
                    }

                    if (config.GetValue(Logging.Logger.CONSOLE_ENABLED, false))
                    {
                        baseLogger.WriteTo.Console(new JsonFormatter(null, false, null));
                    }

                    Log.Logger = baseLogger.CreateLogger();

                    configured = true;
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"ERROR CONFIGURING LOGGING: {ex}");
                }
            }

            return(Serilog.Log.Logger);
        }
示例#2
0
        public static void Setup(IEncompassConfig config, Dictionary <string, string> additionalTags = null)
        {
            LoggerConfiguration baseLogger = null;

            lock (syncRoot)
            {
                try
                {
                    //Serilog has a clever "enricher" approach, but it is created at setup time and wouldn't be easily compatible with how we add tags to logs now.  We could make this a future enhancement.  For now, just add these to each log event when we log.
                    _additionalTags = new ConcurrentDictionary <string, string>();
                    if (!ReferenceEquals(additionalTags, null))
                    {
                        foreach (var kv in additionalTags)
                        {
                            _additionalTags.TryAdd(kv.Key, kv.Value);
                        }
                    }

                    baseLogger = new LoggerConfiguration()
                                 .WriteTo.Logger(aa => aa.MinimumLevel.Verbose())
                                 .Enrich.FromLogContext()
                                 .Enrich.WithExceptionDetails()
                                 .Enrich.WithMachineName()
                                 .Enrich.WithProcessId()
                                 .Enrich.WithEnvironmentUserName()
                                 .Enrich.WithProcessName();

                    baseLogger.WriteTo.Logger(aa => aa.Destructure.ToMaximumDepth(20));

                    if (config.GetValue(Logger.ELASTICSEARCH_ENABLED, false))
                    {
                        baseLogger.WriteTo.Elasticsearch(SerilogHelpers.GetElasticOptions(config));
                    }

                    if (config.GetValue(Logger.FILE_ENABLED, false))
                    {
                        baseLogger.WriteTo.RollingFile(pathFormat: config.GetValue(
                                                           Logger.FILE_FOLDER, config.GetValue(Logger.FILE_NAME)),
                                                       formatter: new JsonFormatter(null, false, null),
                                                       fileSizeLimitBytes: config.GetValue(Logger.FILE_MAX_FILE_BYTES, 10000),
                                                       retainedFileCountLimit: config.GetValue(Logger.FILE_MAX_FILES, 10));
                    }

                    if (config.GetValue(Logger.LOGGLY_ENABLED, false))
                    {
                        Serilog.Events.LogEventLevel eventLevel;
                        eventLevel = SetLogglyEventLevelFromConfig(config);
                        baseLogger.WriteTo.Loggly(logglyConfig: SerilogHelpers.GetLogglyConfig(config), formatProvider: CultureInfo.CurrentCulture,
                                                  restrictedToMinimumLevel: eventLevel);
                    }

                    if (config.GetValue(Logger.CONSOLE_ENABLED, false))
                    {
                        baseLogger.WriteTo.Console(new JsonFormatter(null, false, null));
                    }

                    Serilog.Log.Logger = baseLogger.CreateLogger();

                    configured = true;
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine($"ERROR CONFIGURING LOGGING: {ex}");
                }
            }
        }