使用log4net連接ELK

  • 安裝Elasticseach,Kibana
  • 創建一個C#項目
  • 在項目上添加 log4net(必須),log4net.Appender.ElasticSearch或者log4stash

 

  • 配置App.config
  <?xml version="1.0" encoding="utf-8" ?>
  <configuration>
    <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    <appSettings>
      <!--log4net日誌配置-->
      <!--log4net配置文件路徑-->
      <add key="log4net" value="log4net.config"/>
    </appSettings>
  </configuration>

 

  • 配置log4net.config

(1)使用log4net.Appender.ElasticSearch,配置如下:

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <appender name="ElasticSearchAppender" type="log4net.Appender.ElasticSearch.ElasticSearchAppender, log4net.Appender.ElasticSearch">
      <Servers>
        <Server>
          <Address>172.0.0.1</Address>
          <Port>9200</Port>
        </Server>
      </Servers>
      <IndexName>testlog</IndexName>
      <IndexType>LogEvent</IndexType>
      <Bulksize>2000</Bulksize>
      <BulkIdleTimeout>5000</BulkIdleTimeout>
      <IndexAsync>True</IndexAsync>
    </appender>
    <logger name="log">
      <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
      <level value="INFO" />
      <appender-ref ref="ElasticSearchAppender"/>
    </logger>
  </log4net>
</configuration>

(2)使用log4stash,配置如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <appender name="ElasticSearchAppender" type="log4stash.ElasticSearchAppender, log4stash">
      <Server>172.0.0.1</Server>
      <Port>9200</Port>
      <IndexName>testlog</IndexName>
      <IndexType>LogEvent</IndexType>
      <Bulksize>2000</Bulksize>
      <BulkIdleTimeout>10000</BulkIdleTimeout>
      <IndexAsync>True</IndexAsync>
    </appender>
    <logger name="log">
      <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
      <level value="INFO" />
      <appender-ref ref="ElasticSearchAppender"/>
    </logger>
  </log4net>
</configuration>
  • 主程序調用
class Program
    {
        static void Main(string[] args)
        {
            //獲取config配置文件地址
            var path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase +
                       ConfigurationManager.AppSettings["log4net"];
            ILoggerRepository repository = LogManager.CreateRepository(nameof(Program));
            XmlConfigurator.ConfigureAndWatch(repository, new System.IO.FileInfo(path));
            var log = LogManager.GetLogger(repository.Name, "log");
            log.Info("info");
            log.Error("error");
            //異步調用,增加運行時間
            Console.ReadKey();
        }
    }

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章