public ElkLogProvider()
        {
            _application = new LogApplicationModel();

            _logger = new LoggerConfiguration()
                      .MinimumLevel.Verbose()
                      .Enrich.FromLogContext()
                      .Enrich.WithEcs()
                      .WriteTo.ElasticEcsLogstash(ConfigurationManager.AppSettings["LoggerLogstashUrl"] ?? "http://localhost:8080")
                      .CreateLogger();
        }
        public ElkLogProvider(IHttpContextAccessor context, string logstashUrl = null,
                              LogApplicationModel application = null)
        {
            _application = application ?? new LogApplicationModel();

            _logger = new LoggerConfiguration()
                      .MinimumLevel.Verbose()
                      .Enrich.FromLogContext()
                      .Enrich.WithEcs(context)
                      .WriteTo.ElasticEcsLogstash(logstashUrl ?? "http://localhost:8080")
                      .CreateLogger();
        }
        public JsonResult Index()
        {
            for (var i = 0; i < 300; i++)
            {
                LogApplicationModel application = new LogApplicationModel();
                if (i % 100 == 0)
                {
                    var app = RandomGenerator.RandomApplication();
                    application = new LogApplicationModel
                    {
                        Id      = app[0],
                        Name    = app[1],
                        Type    = (ApplicationTypes)Enum.Parse(typeof(ApplicationTypes), app[2], true),
                        Version = app[3],
                        Server  = "e-maleki.netbar.local"
                    };
                    logProvider.SetApplication(application);
                }

                var action   = RandomGenerator.RandomAuditAction();
                var username = RandomGenerator.RandomUsername();
                var status   = RandomGenerator.RandomActionStatus();

                logProvider.LogAudit(action, new Dictionary <string, string>
                {
                    { "Username", username },
                    { "AuthStatus", status },
                    { "App", JsonConvert.SerializeObject(application) }
                },
                                     "User Authentication");

                Console.WriteLine($"User <{username}> {action} is <{status}>");
            }

            return(Json(true));
        }
 public void SetApplication(LogApplicationModel application)
 => _application = new LogApplicationModel(application);
 public void ChangeApplication(LogApplicationModel application)
 => _application = new LogApplicationModel(application);