对于java项目查看日志方法很多,由于项目需要,查看日志需要命令查看,为方便后端开发人员查看错误日志,项目要求搭建elk日志管理

此次是springcloud搭建elk,spirngboot亦可如此

elk :是elasticsearch(存储日志数据),logstash(收集日志) ,kibana(显示日志数据)的缩写

首先得安装这三个软件,下载地址:

开源搜索:Elasticsearch、ELK Stack 和 Kibana 的开发者 | Elastic

1.启动elastcsearch:

elasticsearch下载解压,然后找到bin目录下的(windows下)elasticsearch.bat启动,默认端口9200无需修改 linux环境下启动需要新建用户,然后用新用户cd到bin目录下,然后用 ./elasticsearch & 命令启动 。

启动成功访问 htttp://ip:9200 如图 代表成功

 

2.启动kibana:

kibana下载解压

(windows环境下)修改 config下的kibana.yml文件 如图:打开kibana链接es的地址 保存

       然后进入bin目录点击kibana.bat启动

linux环境下 同样修改kibana.yml文件,然后用新用户cd到bin目录下,用 ./kibana &命令启动

 启动成功访问 http://ip:5601 如图

3.配置logstash日志收集(重点)

        logstash下载解压:在bin目录或者config目录新建logstash.conf文件 ,文件内容:

input {

  beats {

    port => 5044

  }

  #tcp端口

  tcp {

    port => 4569

    codec => "json"

  }

}

#过滤

filter {

     grok {

        match => {

           "message" => "(?<date>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\]\[(?<level>[A-Z]{4,5})\]\[(?<thread>[A-Za-z0-9/-]{4,40})\]\[(?<class>[A-Za-z0-9/.]{4,40})\]\[(?<msg>.*)"

        }

       remove_field => ["message"]

     }

         #过滤error和warn 只要这两个日志

  if [level] !~ "(ERROR|WARN)" {

         drop {}

     }

}

output {

   if[appname] != "" {

    elasticsearch {

      # 链接es地址

      hosts => ["http://127.0.0.1:9200"]

      index => "%{[appname]}-%{+YYYY.MM.dd}" #索引名称

    }

  } else {

    elasticsearch {

      hosts => ["http://127.0.0.1:9200"]

      index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"

    }

  }

}

保存后启动:

windous环境下cd到bin目录下,用 logstash -f logstash.conf命令启动  如果logstash.conf文件在config目录下用 logstash -f ./config/logstash.conf命令启动

linux环境下 cd到bin目录下:用./logstash -f logstash.conf命令启动

至此elk文件已配置完成,接下来在项目里面配置

1.引入lagstash  maven依赖

<!--集成logstash-->
	  <dependency>
		  <groupId>net.logstash.logback</groupId>
		  <artifactId>logstash-logback-encoder</artifactId>
		  <version>5.3</version>
	  </dependency>
        

2.在resources下新建logback.xml 文件 内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration debug="false">

    <!-- 定义参数 -->
    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SS} [%thread] %-5level %logger{50} - %msg%n" />
    <!-- 控制台打印设置 -->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

    <!-- logstash设置 -->
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <param name="Encoding" value="UTF-8"/>
        <!-- logstash服务器ip -->
        <remoteHost>127.0.0.1</remoteHost>
        <!-- logstash tcp 端口-->
        <port>4569</port>

        <!-- encoder is required -->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" >
            <!--            // 索引名-->
            <customFields>{"appname":"auth-service"}</customFields>
        </encoder>
    </appender>



    <!-- 日志输出级别    logger 自动继承root 的appender, 如果logger 有自己自定义的appender,设置additivity="false" 表示不继承使用,防止日志重复打印 -->
    <springProfile name="prod">
        <!-- 生产环境时激活 -->
        
        <logger name="com.adtec.credit" level="Info" additivity="false">
            <appender-ref ref="consoleAppender" />
            <appender-ref ref="logstash"/>
        </logger>
        <root level="Info">
            <appender-ref ref="consoleAppender" />
            <appender-ref ref="logstash"/>
        </root>
    </springProfile>
    <springProfile name="test">
        <!-- 测试环境时激活 -->
        
        <logger name="com.adtec.credit" level="DEBUG" additivity="false">
            <appender-ref ref="consoleAppender" />
            <appender-ref ref="logstash"/>
        </logger>
        <root level="DEBUG">
            <appender-ref ref="consoleAppender" />
            <appender-ref ref="logstash"/>
        </root>
    </springProfile>
    <springProfile name="dev">
        <!-- 开发环境时激活 -->
        
        <logger name="com.adtec.credit" level="DEBUG" additivity="false">
            <appender-ref ref="consoleAppender" />
            <appender-ref ref="logstash"/>
        </logger>
        <root level="DEBUG">
            <appender-ref ref="consoleAppender" />
            <appender-ref ref="logstash"/>
        </root>
    </springProfile>

</configuration>

然后启动项目进入kibana界面 1、2、3步骤查看

 点击 index Management就会有刚设置的索引,索引es已经自动创建

 点击 index patterns 然后 点击create index patterns

 

输入auth-service-,创建kibana日志的索引 然后点击next step 

完成后:点击

红色框切换就可以看到错误日志 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐