Ejemplo n.º 1
0
        public void TEMPLATE_IS_PUT_WHEN_IS_VALID()
        {
            //Arrange
            var template = new TemplateInfo(_fileAccessor, _eventWriter)
            {
                FileName = "file",
                Name     = "template"
            };
            var rawBody = "body";

            _fileAccessor.Exists("file").Returns(true);
            _fileAccessor.ReadAllText(template.FileName).Returns(rawBody);
            template.ActivateOptions();
            var appender = new ElasticSearchAppender(_elasticClientFactory, "index", "type", _timer,
                                                     _tolerateCallsFactory,
                                                     _bulk, _logEventConverterFactory, _elasticFilters, _fileAccessor, _eventWriter)
            {
                Template = template
            };

            //Act
            appender.ActivateOptions();

            //Assert
            _elasticClient.Received().PutTemplateRaw(template.Name, rawBody);
        }
Ejemplo n.º 2
0
        public void BULK_IS_NOT_INDEXED_WHEN_BULK_LIMIT_IS_ZERO()
        {
            //Arrange
            const int bulkSize = 0;
            var       appender = new ElasticSearchAppender(_elasticClientFactory, "index", "type", _timer,
                                                           _tolerateCallsFactory,
                                                           _bulk, _logEventConverterFactory, _elasticFilters, _fileAccessor, _eventWriter)
            {
                DropEventsOverBulkLimit = false,
                BulkSize = bulkSize,
            };

            _bulk.Count.Returns(bulkSize + 1);
            var bulk = new List <InnerBulkOperation> {
                new InnerBulkOperation()
            };

            _bulk.ResetBulk().Returns(bulk);
            appender.ActivateOptions();

            //Act
            appender.DoAppend(new LoggingEvent(new LoggingEventData()));

            //Assert
            _elasticClient.DidNotReceiveWithAnyArgs().IndexBulk(null);
            _elasticClient.DidNotReceiveWithAnyArgs().IndexBulkAsync(null);
        }
Ejemplo n.º 3
0
        public void BULK_SHOULD_BE_RESET_WHEN_TIMER_ELAPSED()
        {
            //Arrange
            var appender = new ElasticSearchAppender(_elasticClientFactory, "index", "type", _timer,
                                                     _tolerateCallsFactory,
                                                     _bulk, _logEventConverterFactory, _elasticFilters, _fileAccessor, _eventWriter);

            _bulk.ResetBulk().Returns(new List <InnerBulkOperation>());

            //Act
            _timer.Elapsed += Raise.Event <EventHandler>(this, null);

            //Assert
            _bulk.Received().ResetBulk();
        }
Ejemplo n.º 4
0
        public void CALLS_TOLERATOR_CREATED_WHEN_PROPERTY_CHANGED(int numOfSeconds)
        {
            //Arrange
            var appender = new ElasticSearchAppender(_elasticClientFactory, "index", "type", _timer,
                                                     _tolerateCallsFactory,
                                                     _bulk, _logEventConverterFactory, _elasticFilters, _fileAccessor, _eventWriter);

            appender.ActivateOptions();

            //Act
            appender.TolerateLogLogInSec = numOfSeconds;

            //Assert
            _tolerateCallsFactory.Received().Create(numOfSeconds);
        }
Ejemplo n.º 5
0
        public void EMPTY_BULK_IS_NOT_INDEXED_WHEN_TIMER_ELAPSES()
        {
            //Arrange
            var appender = new ElasticSearchAppender(_elasticClientFactory, "index", "type", _timer,
                                                     _tolerateCallsFactory,
                                                     _bulk, _logEventConverterFactory, _elasticFilters, _fileAccessor, _eventWriter);

            _bulk.ResetBulk().Returns(new List <InnerBulkOperation>());

            //Act
            _timer.Elapsed += Raise.Event <EventHandler>(this, null);

            //Assert
            _elasticClient.DidNotReceiveWithAnyArgs().IndexBulk(null);
            _elasticClient.DidNotReceiveWithAnyArgs().IndexBulkAsync(null);
        }
Ejemplo n.º 6
0
        public void TEMPLATE_IS_NOT_PUT_WHEN_IS_NOT_VALID()
        {
            //Arrange
            var appender = new ElasticSearchAppender(_elasticClientFactory, "index", "type", _timer,
                                                     _tolerateCallsFactory,
                                                     _bulk, _logEventConverterFactory, _elasticFilters, _fileAccessor, _eventWriter)
            {
                Template = new TemplateInfo()
            };

            //Act
            appender.ActivateOptions();

            //Assert
            _elasticClient.DidNotReceiveWithAnyArgs().PutTemplateRaw(null, null);
        }
Ejemplo n.º 7
0
        public void BULK_IS_INDEXED_ASYNC_WHEN_TIMER_ELAPSES()
        {
            //Arrange
            var appender = new ElasticSearchAppender(_elasticClientFactory, "index", "type", _timer,
                                                     _tolerateCallsFactory,
                                                     _bulk, _logEventConverterFactory, _elasticFilters, _fileAccessor, _eventWriter);
            var bulk = new List <InnerBulkOperation> {
                new InnerBulkOperation()
            };

            _bulk.ResetBulk().Returns(bulk);
            appender.IndexAsync = true;
            appender.ActivateOptions();

            //Act
            _timer.Elapsed += Raise.Event <EventHandler>(this, null);

            //Assert
            _elasticClient.Received().IndexBulkAsync(bulk);
        }
Ejemplo n.º 8
0
        public void INDEX_BULK_EXCEPTION_IS_NOT_THROWN_IN_APPENDER()
        {
            //Arrange
            var appender = new ElasticSearchAppender(_elasticClientFactory, "index", "type", _timer,
                                                     _tolerateCallsFactory,
                                                     _bulk, _logEventConverterFactory, _elasticFilters, _fileAccessor, _eventWriter)
            {
                IndexAsync = false
            };

            _elasticClient.WhenForAnyArgs(x => x.IndexBulkAsync(null)).Throw(new Exception());
            var bulk = new List <InnerBulkOperation> {
                new InnerBulkOperation()
            };

            _bulk.ResetBulk().Returns(bulk);
            appender.ActivateOptions();

            //Act
            //Assert
            _timer.Elapsed += Raise.Event <EventHandler>(this, null);
        }
Ejemplo n.º 9
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }



            #region 添加log4net

            try
            {
                throw new Exception("使用log4net.ElasticSearch,不使用 log4stash 操作 ElasticSearch");

                //使用 log4stash
                var Log4NetConfig = $"log4net.Joson{(env.IsDevelopment() ? Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") : String.Empty)}.config";
                loggerFactory.AddLog4Net(new Log4NetProviderOptions {
                    Name = "Log4Net", Log4NetConfigFileName = Log4NetConfig
                });
            }
            catch (Exception)
            {
                #region log4net.ElasticSearch 设置数据库

                log4net.Repository.Hierarchy.Hierarchy Hierarchy = LogManager.GetRepository() as log4net.Repository.Hierarchy.Hierarchy;

                if (Hierarchy != null)
                {
                    //get ADONetAppender
                    var SQLServerAppender = (AdoNetAppender)Hierarchy.GetAppenders()
                                            .Where(appender => appender.Name.Equals("SQLServerAppender", StringComparison.InvariantCultureIgnoreCase))
                                            .FirstOrDefault();

                    var SQLiteNetAppender = (AdoNetAppender)Hierarchy.GetAppenders()
                                            .Where(appender => appender.Name.Equals("SQLiteNetAppender", StringComparison.InvariantCultureIgnoreCase))
                                            .FirstOrDefault();


                    ElasticSearchAppender ElasticSearchAppender = (ElasticSearchAppender)Hierarchy.GetAppenders()
                                                                  .Where(appender => appender.Name.Equals("ElasticSearchAppender", StringComparison.InvariantCultureIgnoreCase))
                                                                  .FirstOrDefault();

                    ElasticSearchAppender ElasticSearchCustomaryAppender = (ElasticSearchAppender)Hierarchy.GetAppenders()
                                                                           .Where(appender => appender.Name.Equals("ElasticSearchCustomaryAppender", StringComparison.InvariantCultureIgnoreCase))
                                                                           .FirstOrDefault();


                    if (SQLServerAppender != null)
                    {
                        //SQLServerAppender.ConnectionString = "数据库连接";

                        string SQLServer = Configuration.GetConnectionString("SQLServer");
                        //更新数据库连接
                        SQLServerAppender.ConnectionString = Configuration.GetConnectionString(SQLServer);
                        //SQLServerAppender.ConnectionStringName = "SQLServer";
                        //刷新AdoNetAppender
                        SQLServerAppender.ActivateOptions();
                    }


                    if (SQLiteNetAppender != null)
                    {
                        string SQLite = Configuration.GetConnectionString("SQLite");
                        SQLiteNetAppender.ConnectionString = Configuration.GetConnectionString(SQLite);
                        SQLiteNetAppender.ActivateOptions();
                    }

                    if (ElasticSearchAppender != null)
                    {
                        string ElasticSearch = Configuration.GetConnectionString("ElasticSearch");
                        ElasticSearchAppender.ConnectionString = Configuration.GetConnectionString(ElasticSearch);
                        ElasticSearchAppender.ActivateOptions();
                    }

                    if (ElasticSearchCustomaryAppender != null)
                    {
                        string ElasticSearch = Configuration.GetConnectionString("ElasticSearchCustomary");
                        ElasticSearchCustomaryAppender.ConnectionString = Configuration.GetConnectionString(ElasticSearch);
                        ElasticSearchCustomaryAppender.ActivateOptions();
                    }
                }

                #region 动态修改log4net设置

                //https://www.cnblogs.com/jinzhao/archive/2009/08/06/1540214.html
                //var log4netConfig = new FileInfo("~/log4net.Relase.config");
                //log4net.Config.XmlConfigurator.ConfigureAndWatch(log4netConfig);

                #endregion

                using (Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("Elastic.Kibana.Log4Net.log4net.Relase.config"))
                {
                    log4net.Config.XmlConfigurator.Configure(stream);
                }

                #endregion
            }

            #endregion


            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
Ejemplo n.º 10
0
        public ActionResult Index()
        {
            using (Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("Net.Framerwork.AdoNetAppenders.Properties.log4net.config"))
            {
                log4net.Config.XmlConfigurator.Configure(stream);
            }

            Hierarchy hier = LogManager.GetRepository() as Hierarchy;



            if (hier != null)
            {
                //get ADONetAppender
                var adoAppender = (AdoNetAppender)hier.GetAppenders()
                                  .Where(appender => appender.Name.Equals("SQLServerAppender", StringComparison.InvariantCultureIgnoreCase))
                                  .FirstOrDefault();

                adoAppender = (AdoNetAppender)hier.GetAppenders()
                              .Where(appender => appender.Name.Equals("SQLiteNetAppender", StringComparison.InvariantCultureIgnoreCase))
                              .FirstOrDefault();


                ElasticSearchAppender ElasticSearchAppenders = (ElasticSearchAppender)hier.GetAppenders()
                                                               .Where(appender => appender.Name.Equals("ElasticSearchAppender", StringComparison.InvariantCultureIgnoreCase))
                                                               .FirstOrDefault();

                if (adoAppender == null)
                {
                    //connStr = adoAppender.ConnectionString;
                    //SQLiteConnection cn = new SQLiteConnection(connStr);

                    ////按照路径创建数据库文件
                    ////cn.Open();
                    ////创建数据库表
                    //if (cn.State != System.Data.ConnectionState.Open)
                    //{
                    //    cn.Open();//打开数据库
                    //    SQLiteCommand cmd = new SQLiteCommand();
                    //    cmd.Connection = cn;//把 SQLiteCommand的 Connection和SQLiteConnection 联系起来
                    //    cmd.CommandText = "CREATE TABLE IF NOT EXISTS Joson(ID varchar(4),score int)";//输入SQL语句
                    //    cmd.ExecuteNonQuery();//调用此方法运行

                    //    cmd.CommandText = "INSERT INTO Log(Date, Level, Logger, Message) VALUES('@Date', '@Level', '@Logger', '@Message')";
                    //    cmd.ExecuteNonQuery();//调用此方法运行
                    //}
                    //cn.Close();


                    // update connectionstring
                    //adoAppender.ConnectionString = configuration.GetConnectionString(ConnectionStringNames.Log).ConnectionString;
                    adoAppender.ConnectionString = "设置数据库连接";
                    //refresh settings of appender
                    adoAppender.ActivateOptions();
                }
            }

            ILog log = log4net.LogManager.GetLogger("Log");

            //https://stackoverflow.com/questions/12139486/log4net-how-to-add-a-custom-field-to-my-logging
            log4net.LogicalThreadContext.Properties["BrowserInfo"] = "Custom value BrowserInfo";
            log4net.GlobalContext.Properties["ClientIP"]           = "192.168.0.1";
            log4net.GlobalContext.Properties["ClientName"]         = "ClientName";
            log.Error("ActionResult -Index");



            Monitor.Helper.Log4NetHelper logHelper = new Monitor.Helper.Log4NetHelper();
            logHelper.Write(new Monitor.Helper.LogEntity
            {
                ClientName  = "ClientName",
                BrowserInfo = "Custom value BrowserInfo",
                CustomData  = new
                {
                    Requesturl  = "Requesturl",
                    Others      = "Others",
                    Referrerurl = "Referrerurl"
                }
            });


            Monitor.Helper.LogEncapsulation.Info(new
            {
                ClientIP    = "192.168.0.1",
                ClientName  = "ClientName",
                Requesturl  = "Requesturl",
                Referrerurl = "Referrerurl",
                CustomData  = new
                {
                    Others = "Others",
                    Joson  = "Jiang"
                }
            });



            return(View());
        }