zoukankan      html  css  js  c++  java
  • .NET Core使用NLog通过Kafka实现日志收集

    微服务日志之.NET Core使用NLog通过Kafka实现日志收集

    https://www.cnblogs.com/maxzhang1985/p/9522017.html

    一、前言
    NET Core越来越受欢迎,因为它具有在多个平台上运行的原始.NET Framework的强大功能。Kafka正迅速成为软件行业的标准消息传递技术。这篇文章简单介绍了如何使用.NET(Core)和Kafka实现NLog的Target。

    在日常项目开发过程中,Java体系下Spring Boot + Logback很容易就接入了Kafka实现了日志收集,在.NET和.NET Core下一直习惯了使用NLog作为日志组件。为了让微服务环境中dotnet和java的服务都统一的进行日志收集,接下来的文章中会介绍两种语言的统一接入方式。写这个组件的目地是让团队成员不需要编写NLog的JsonLayout从而达到与java服务输出一样格式到kafka的目地,简化开发人员的配置难度,当然代价就是配置不灵活了。

    二、开源
    通过实现NLog的Target,接入kafka将日志传输到Logstash的组件。

    https://github.com/maxzhang1985/NLog.Kafka

    三、使用
    建立项目
    NLog.Kafka组件支持.NET 4.5+和 NETStandard1.6+ ,所在可以在传统.NET使用,当然也支持.NET Core的跨平台使用(Win、Linux、Mac)。

    项目引用
    NLog 4.5.8
    NLog.Kafka
    librdkafka.redist
    引用librdkafka.redist是因为使用了依赖库Confluent.Kafka 0.11.5,Confluent.Kafka 使用了著名的librdkafka开源库,它是用C ++编写的,作为其它的语言(如C ++,C#,Python和Node)的Kafka驱动程序的基础。

    配置
    在项目中建立NLog.config,并设置为Copy always,内容如下:

    编写测试代码 class Program { static void Main(string[] args) {
            Logger logger = LogManager.GetCurrentClassLogger();
    
            MappedDiagnosticsContext.Set("item1", "haha");
            for(int i = 0; i < 10; i++)
            {
                logger.Info("hello world");
                Console.WriteLine("sended");
            }
    
            Console.ReadKey();
        }
    

    }
    Logstash配置
    input {
    kafka {
    bootstrap_servers => "127.0.0.1:9092"
    group_id => "logstash"
    topics => "loges"
    codec => "json"
    }
    }

    output{
    elasticsearch {
    hosts => ["127.0.0.1:9002"]
    index => "log_{[appname]}_%{+YYYY.MM.dd}"

    }

    stdout { codec => rubydebug }

    }
    四、最后
    附上的Demo和开源库地址:https://github.com/maxzhang1985/NLog.Kafka

    GitHub:https://github.com/maxzhang1985/YOYOFx 如果觉还可以请Star下, 欢迎一起交流。

  • 相关阅读:
    CPU,MPU,MCU,SOC,SOPC联系与差别
    中央处理器
    手机CPU
    手机CPU天梯图2018年5月最新版
    Ubuntu输入法切换问题
    说说C与汇编之间的互相联系(转)
    MDK972-EK开发板裸调试设置和裸机程序烧写(转)
    来,打一下五笔的字根表
    64位debian系统下安装inodeClient
    计算机网络——链路层协议
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/9564336.html
Copyright © 2011-2022 走看看