Class 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
- All Implemented Interfaces:
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
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的端口打开且可访问-
Nested Class Summary
Nested classes/interfaces inherited from class com.elitesland.ystdms.sys.log.appender.AbstractCustomAppender
AbstractCustomAppender.DefaultLayout -
Field Summary
Fields inherited from class com.elitesland.ystdms.sys.log.appender.AbstractCustomAppender
layoutFields inherited from class ch.qos.logback.core.AppenderBase
name, startedFields inherited from class ch.qos.logback.core.spi.ContextAwareBase
context -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription当前appender的名称voidexecuteAppend(ch.qos.logback.classic.spi.ILoggingEvent event) 将日志事件追加到Logstashvoid设置logstash服务器地址voidsetIndexName(String indexName) Elasticsearch上的索引名称voidsetPort(int port) 设置TCP端口voidstart()启动Appender,初始化编码器和连接voidstop()停止Appender,清理资源Methods inherited from class com.elitesland.ystdms.sys.log.appender.AbstractCustomAppender
append, getAppName, getTenantId, getUserId, getUsername, isActive, setActiveAppender, setLayoutMethods inherited from class ch.qos.logback.core.AppenderBase
addFilter, clearAllFilters, doAppend, getCopyOfAttachedFiltersList, getFilterChainDecision, getName, isStarted, setName, toStringMethods inherited from class ch.qos.logback.core.spi.ContextAwareBase
addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, getDeclaredOrigin, getStatusManager, setContextMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface ch.qos.logback.core.spi.ContextAware
addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, setContext
-
Constructor Details
-
LogstashAppender
public LogstashAppender()
-
-
Method Details
-
appenderName
Description copied from class:AbstractCustomAppender当前appender的名称可用于判断是否激活
- Specified by:
appenderNamein classAbstractCustomAppender- Returns:
- appender名称
-
start
public void start()启动Appender,初始化编码器和连接- Specified by:
startin interfacech.qos.logback.core.spi.LifeCycle- Overrides:
startin classch.qos.logback.core.AppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
-
executeAppend
public void executeAppend(ch.qos.logback.classic.spi.ILoggingEvent event) 将日志事件追加到Logstash- Specified by:
executeAppendin classAbstractCustomAppender- Parameters:
event- 日志事件
-
stop
public void stop()停止Appender,清理资源- Specified by:
stopin interfacech.qos.logback.core.spi.LifeCycle- Overrides:
stopin classch.qos.logback.core.AppenderBase<ch.qos.logback.classic.spi.ILoggingEvent>
-
setHost
设置logstash服务器地址- Parameters:
host- 服务器地址
-
setPort
public void setPort(int port) 设置TCP端口- Parameters:
port- TCP端口
-
setIndexName
Elasticsearch上的索引名称- Parameters:
indexName- 索引名称
-