类 LogstashAppender

java.lang.Object
ch.qos.logback.core.spi.ContextAwareBase
ch.qos.logback.core.AppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
com.elitesland.ystdms.sys.log.appender.AbstractCustomAppender
com.elitesland.ystdms.sys.log.appender.LogstashAppender
所有已实现的接口:
ch.qos.logback.core.Appender<ch.qos.logback.classic.spi.ILoggingEvent>, ch.qos.logback.core.spi.ContextAware, ch.qos.logback.core.spi.FilterAttachable<ch.qos.logback.classic.spi.ILoggingEvent>, ch.qos.logback.core.spi.LifeCycle

public class LogstashAppender extends AbstractCustomAppender
ELK Appender.

将过滤后的日志序列化为 JSON 并推送至 Logstash。

官方GitHub:源码

LogStash配置(简化部分)
     
 input {
     tcp {
         port => 4560
         codec => json_lines
     }
 }

 filter {
     # 可选:如果你还接收其他来源的日志,可以用条件区分
     # 这里假设只有 JSON 日志,无需额外 filter
 }

 output {
     elasticsearch {
         hosts => ["elasticsearch:9200"]
         user => "elastic"
         password => "your_password"
         # 直接从日志字段中取索引名,不加日期后缀(完全固定)
         index => "%{[index_name]}"
         # 或者如果你希望保留日期后缀,可以拼接:
         # index => "%{[index_name]}-%{+YYYY.MM.dd}"
     }
     stdout { codec => rubydebug }  # 调试用
 }
     
 

注意:确保logstash的端口打开且可访问
  • 嵌套类概要

    从类继承的嵌套类/接口 com.elitesland.ystdms.sys.log.appender.AbstractCustomAppender

    AbstractCustomAppender.DefaultLayout
  • 字段概要

    从类继承的字段 com.elitesland.ystdms.sys.log.appender.AbstractCustomAppender

    layout

    从类继承的字段 ch.qos.logback.core.AppenderBase

    name, started

    从类继承的字段 ch.qos.logback.core.spi.ContextAwareBase

    context
  • 构造器概要

    构造器
    构造器
    说明
     
  • 方法概要

    修饰符和类型
    方法
    说明
    当前appender的名称
    void
    executeAppend(ch.qos.logback.classic.spi.ILoggingEvent event)
    将日志事件追加到Logstash
    void
    设置logstash服务器地址
    void
    setIndexName(String indexName)
    Elasticsearch上的索引名称
    void
    setPort(int port)
    设置TCP端口
    void
    启动Appender,初始化编码器和连接
    void
    停止Appender,清理资源

    从类继承的方法 com.elitesland.ystdms.sys.log.appender.AbstractCustomAppender

    append, getAppName, getTenantId, getUserId, getUsername, isActive, setActiveAppender, setLayout

    从类继承的方法 ch.qos.logback.core.AppenderBase

    addFilter, clearAllFilters, doAppend, getCopyOfAttachedFiltersList, getFilterChainDecision, getName, isStarted, setName, toString

    从类继承的方法 ch.qos.logback.core.spi.ContextAwareBase

    addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, getDeclaredOrigin, getStatusManager, setContext

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    从接口继承的方法 ch.qos.logback.core.spi.ContextAware

    addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, setContext
  • 构造器详细资料

    • LogstashAppender

      public LogstashAppender()
  • 方法详细资料

    • appenderName

      public String appenderName()
      从类复制的说明: AbstractCustomAppender
      当前appender的名称

      可用于判断是否激活

      指定者:
      appenderName 在类中 AbstractCustomAppender
      返回:
      appender名称
    • start

      public void start()
      启动Appender,初始化编码器和连接
      指定者:
      start 在接口中 ch.qos.logback.core.spi.LifeCycle
      覆盖:
      start 在类中 ch.qos.logback.core.AppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
    • executeAppend

      public void executeAppend(ch.qos.logback.classic.spi.ILoggingEvent event)
      将日志事件追加到Logstash
      指定者:
      executeAppend 在类中 AbstractCustomAppender
      参数:
      event - 日志事件
    • stop

      public void stop()
      停止Appender,清理资源
      指定者:
      stop 在接口中 ch.qos.logback.core.spi.LifeCycle
      覆盖:
      stop 在类中 ch.qos.logback.core.AppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
    • setHost

      public void setHost(String host)
      设置logstash服务器地址
      参数:
      host - 服务器地址
    • setPort

      public void setPort(int port)
      设置TCP端口
      参数:
      port - TCP端口
    • setIndexName

      public void setIndexName(String indexName)
      Elasticsearch上的索引名称
      参数:
      indexName - 索引名称