示例#1
0
文件: Startup.cs 项目: t4rn/Seriloger
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddScoped <IKrisLogger, KrisLogger>();

            SerilogSettings serilogSettings = new SerilogSettings();

            Configuration.GetSection("Serilog").Bind(serilogSettings);
            services.AddSingleton(serilogSettings);
        }
示例#2
0
        public static UnityEditor.SettingsProvider CreateSettingsProvider()
        {
            var provider = new UnityEditor.SettingsProvider("Project/Serilog", SettingsScope.Project)
            {
                label = "Serilog",

                activateHandler = (searchContext, rootElement) =>
                {
                    m_Settings = SerilogSettings.Instance;
                    var logLevelField = new EnumField("Log Level", m_Settings.LogLevel);
                    logLevelField.RegisterCallback <ChangeEvent <Enum> >(SerilogSettings_OnValueChanged);
                    rootElement.Add(logLevelField);
                },
                keywords = new HashSet <string>(new[] { "Logging", "Serilog", "Log Level" })
            };

            return(provider);
        }
示例#3
0
        private bool LoadFileSettings(string localSettingFileName, bool optional)
        {
            if (File.Exists(localSettingFileName))
            {
                try
                {
                    var settings = new JsonSerializerSettings
                    {
                        ObjectCreationHandling = ObjectCreationHandling.Replace
                    };
                    string data = File.ReadAllText(localSettingFileName);
                    Settings = JsonConvert.DeserializeObject <SerilogSettings>(data, settings);
                    if (string.IsNullOrEmpty(Settings.FileOpenDialogFilters))
                    {
                        Settings.FileOpenDialogFilters = "All Supported formats (*.Clef;*.log;*.gz)|*.clef;*.log;*.gz|Clef format (*.clef)|*.clef|Plain log text file (*.log)|*.log|GZIP file (*.gz)|*.gz";
                    }
                    return(true);
                }
                catch (Exception ex)
                {
                    LogManager.Instance.LogWarning($"Error loading user setting file: {ex.Message}", "Analogy Serilog Parser");
                    Settings = new SerilogSettings();
                    if (string.IsNullOrEmpty(Settings.FileOpenDialogFilters))
                    {
                        Settings.FileOpenDialogFilters = "All Supported formats (*.Clef;*.log;*.gz)|*.clef;*.log;*.gz|Clef format (*.clef)|*.clef|Plain log text file (*.log)|*.log|GZIP file (*.gz)|*.gz";
                    }
                    return(true);
                }
            }
            else
            {
                if (!optional)
                {
                    Settings = new SerilogSettings();
                    if (string.IsNullOrEmpty(Settings.FileOpenDialogFilters))
                    {
                        Settings.FileOpenDialogFilters = "All Supported formats (*.Clef;*.log;*.gz)|*.clef;*.log;*.gz|Clef format (*.clef)|*.clef|Plain log text file (*.log)|*.log|GZIP file (*.gz)|*.gz";
                    }
                    return(false);
                }
            }

            return(false);
        }
示例#4
0
        static void TryCreateSettings()
        {
            m_Settings = AssetDatabase.LoadAssetAtPath <SerilogSettings>(SettingsFile);
            if (m_Settings == null)
            {
                m_Settings = ScriptableObject.CreateInstance <SerilogSettings>();

                string settingsPath = Application.dataPath + "/" + SettingsDirectory;
                if (!Directory.Exists(settingsPath))
                {
                    Directory.CreateDirectory(settingsPath);
                }
                AssetDatabase.CreateAsset(m_Settings, SettingsFile);
                AssetDatabase.SaveAssets();

                var preloadedAssets = PlayerSettings.GetPreloadedAssets().ToList();
                preloadedAssets.Add(m_Settings);
                PlayerSettings.SetPreloadedAssets(preloadedAssets.ToArray());
            }
        }
        private static SerilogSettings GetOrCreateSettings()
        {
            settings = GetSettings();
            if (settings == null)
            {
                settings = SerilogSettings.CreateInstance <SerilogSettings>();

                string settingsPath = Application.dataPath + "/" + SETTINGS_DIRECTORY;
                if (!Directory.Exists(settingsPath))
                {
                    Directory.CreateDirectory(settingsPath);
                }
                AssetDatabase.CreateAsset(settings, SETTINGS_FILE);
                AssetDatabase.SaveAssets();

                var preloadedAssets = UnityEditor.PlayerSettings.GetPreloadedAssets().ToList();
                preloadedAssets.Add(settings);
                UnityEditor.PlayerSettings.SetPreloadedAssets(preloadedAssets.ToArray());
            }
            return(settings);
        }
示例#6
0
        public KrisLogger(SerilogSettings settings)
        {
            string template = "{Timestamp:yyyy-MM-dd HH:mm:ss.ff} | {Level:u3} | {Message:lj}{Exception} | Action: '{ActionName}'{NewLine}";

            _log = new LoggerConfiguration()
                   .MinimumLevel.Debug()
                   .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
                   .Enrich.FromLogContext()
                   //.WriteTo.Console()

                   .WriteTo.File(
                path: settings.FileDebugPath,
                outputTemplate: template,
                restrictedToMinimumLevel: LogEventLevel.Verbose,
                rollingInterval: RollingInterval.Day,
                rollOnFileSizeLimit: true,
                shared: true,
                flushToDiskInterval: TimeSpan.FromSeconds(1))

                   .WriteTo.File(
                path: settings.FileErrorPath,
                outputTemplate: template,
                restrictedToMinimumLevel: LogEventLevel.Error,
                rollingInterval: RollingInterval.Day,
                rollOnFileSizeLimit: true,
                shared: true,
                flushToDiskInterval: TimeSpan.FromSeconds(1))

                   .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(settings.Uri))
            {
                AutoRegisterTemplate = true,
                MinimumLogEventLevel = Enum.Parse <LogEventLevel>(settings.LogLevel),
                CustomFormatter      = new ExceptionAsObjectJsonFormatter(renderMessage: true), // for Kibana
                IndexFormat          = settings.IndexFormat
            })
                   .CreateLogger();
        }
示例#7
0
 public UserSettingsManager()
 {
     if (File.Exists(SerilogFileSetting))
     {
         try
         {
             var settings = new JsonSerializerSettings
             {
                 ObjectCreationHandling = ObjectCreationHandling.Replace
             };
             string data = File.ReadAllText(SerilogFileSetting);
             Settings = JsonConvert.DeserializeObject <SerilogSettings>(data, settings);
         }
         catch (Exception ex)
         {
             LogManager.Instance.LogException(ex, "Analogy Serilog Parser", "Error loading user setting file");
             Settings = new SerilogSettings();
         }
     }
     else
     {
         Settings = new SerilogSettings();
     }
 }
 public WeatherForecastController(ILogger <WeatherForecastController> logger, IOptions <SerilogSettings> serilogSettings)
 {
     _serilogSettings = serilogSettings.Value;
     _logger          = logger;
 }
示例#9
0
 /// <summary>
 /// Habilita el proveedor de errores Serilog.
 /// </summary>
 /// <param name="settings">La configuración del proveedor de errores Serilog.</param>
 /// <returns>La interface ILoggerService.</returns>
 private static ILoggerService UseSerilog(SerilogSettings settings)
 => new SerilogProvider(settings);