您的位置 首页 java

兼容Java&Net的日志平台技术设计方案

日志平台技术设计文档

序号

时间

备注

0

2021/12/21

初始版本

一 功能需求

  • 技术路线尽量统一
  • NET、Java 项目的日志整合,方便查询
  • 对业务入侵性低

二 技术实现

  • 采用目前比较成熟的ELK日志系统,可对不同的开发语言进行收集。

三 架构实现

  • 部署

  • 数据流程

四 项目接入

  • Net
    • 添加 NLog.Targets.ElasticSearch 程序包
    • 编辑Nlog.config
 <extensions> 
  <add assembly="NLog.Targets.ElasticSearch"/> 
</extensions>   
 <target xsi:type=" ElasticSearch " name="ElasticLog" uri="#34; index="nlog-${date:format=yyyy.MM.dd}" documentType="logevent" includeAllProperties="true">
  <field name=" private " layout="${assembly-version}" />
 </target>   
 <rules> 
  <logger name="Kibana" minlevel="Info" writeTo="ElasticLog"/> 
 </rules>  
    • 添加日志帮助 Utils
     public class LogHelper
    {
        private  static  Logger logger;
        private static string logRuleName = "Kibana";
        static LogHelper()
        {
            logger = LogManager.GetLogger(logRuleName);
            logger.LoggerReconfigured += logger_LoggerReconfigured;
        }

        static  void  logger_LoggerReconfigured(object sender, System.EventArgs e)
        {
            logger = LogManager.GetLogger(logRuleName);
        }

        public static void WirtError(string message)
        {
            logger.Log(LogLevel.Error, message);
        }

        public static void WirtDebug(string message)
        {
            logger.Log(LogLevel.Debug, message);
        }
    }  
    • 记录日志
 LogHelper.WirtError("日志记录");  
  • Java
    • 添加Logback日志组件
 <dependency>
   <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
   <version>5.1</version>
</dependency>  
  • 日志配置信息
 <appender name="logstash"
          class="net.logstash.logback.appender.Logstash tcp SocketAppender">
    <destination>xxx.xxx.xxx.xxx:xxxx</destination>
    <queueSize>1048576</queueSize>
    <!-- encoder必须配置,有多种可选 -->
    <encoder  charset ="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
        <customFields>{"appname":"${Application_Name}"}</customFields>
    </encoder>
    <connectionStrategy>
        <roundRobin>
            <connectionTTL>5 minutes</connectionTTL>
        </roundRobin>
    </connectionStrategy>
</appender>  
  • root 配置
 <springProfile name="log">
        <root level="debug"><appender-ref ref="logstash" /></root>
 </springProfile>  
  • 在logstash的配置文件路径,默认为/etc/logstash/conf.d添加文件biz_es.conf,文件名称可以自己根据实际需求修改。
  input  {
        tcp {  
        ##host:port就是上面appender中的 destination,这里其实把logstash作为服务,开启9601端口接收logback发出的消息  
            host => "0.0.0.0"
        #模式选择为server  
            mode => "server" 
            port => xxxx
        ##格式json  
            codec => "json"
            type => "server"
        }  
    
    } 
    
    output {
            if[type]=="server"{
            elasticsearch {
            action => "index"
            #ES地址
                    hosts => "192.168.1.215"
            #指定索引名字,不适用默认的,用来区分各个项目
                    index => "%{[appname]}-%{+YYYY.MM.dd}"
            }
        }
    }  

到这里elk搭建及java&net使用就完成了,如果使用过程中遇到什么问题,可以留言交流。

喜欢的朋友记得给个关注~

文章来源:智云一二三科技

文章标题:兼容Java&Net的日志平台技术设计方案

文章地址:https://www.zhihuclub.com/199308.shtml

关于作者: 智云科技

热门文章

网站地图