elasticsearch 使用Log4j将应用程序日志写入远程服务器,elasticsearch,log4j,log4j2,elk,elasticsearch,Log4j,Log4j2,Elk" /> elasticsearch 使用Log4j将应用程序日志写入远程服务器,elasticsearch,log4j,log4j2,elk,elasticsearch,Log4j,Log4j2,Elk" />

elasticsearch 使用Log4j将应用程序日志写入远程服务器

elasticsearch 使用Log4j将应用程序日志写入远程服务器,elasticsearch,log4j,log4j2,elk,elasticsearch,Log4j,Log4j2,Elk,我需要将我的应用程序日志(即我的Log4j的文件Appender写入的)写入一个远程服务器[用于弹性搜索目的],而不是我的应用程序当前运行的位置 我怎样才能做这个功能??此用例是否有任何单独的附加器或配置 我知道,gelf appender可以将一些选定的值推送到ELK服务器 <Gelf name="gelf" host="udp:34.yyx.yz.xxx" port="1514" version="1.0"

我需要将我的应用程序日志(即我的Log4j的文件Appender写入的
)写入一个
远程服务器
[用于弹性搜索目的],而不是我的应用程序当前运行的位置

我怎样才能做这个功能??此用例是否有任何单独的附加器或配置

我知道,
gelf appender
可以将一些选定的值推送到ELK服务器

<Gelf name="gelf" host="udp:34.yyx.yz.xxx" port="1514" version="1.0"
            extractStackTrace="true" filterStackTrace="true" mdcProfiling="true"
            includeFullMdc="true" maximumMessageSize="8192" originHost="%host"
            ignoreExceptions="true">
            <Field name="timestamp" pattern="%d{dd MMM yyyy HH:mm:ss,SSS}" />
            <Field name="level" pattern="%level" />
            <Field name="simpleClassName" pattern="%C{1}" />
            <Field name="className" pattern="%C" />
            <Field name="server.simple" pattern="%host{simple}" />
            <Field name="server.fqdn" pattern="%host{fqdn}" />
            <Field name="application" literal="${env:HOSTNAME}" />
        </Gelf>


是否有其他不同的方法可以将我的应用程序日志作为
完整文件发送到远程服务器。

让Log4j直接将日志发送到远程系统并不一定是个好主意。当您的ELK服务器停机(例如,进行维护)时会发生什么情况

一个更好的方法是利用其唯一的工作是跟踪日志文件并将其发送到ELK服务器。如果后者因任何原因关闭,Filebeat将暂停、缓冲日志并稍后重试。这是一种更可靠的方法,可以确保所有日志最终都能进入ELK服务器

<Gelf name="gelf" host="udp:34.yyx.yz.xxx" port="1514" version="1.0"
            extractStackTrace="true" filterStackTrace="true" mdcProfiling="true"
            includeFullMdc="true" maximumMessageSize="8192" originHost="%host"
            ignoreExceptions="true">
            <Field name="timestamp" pattern="%d{dd MMM yyyy HH:mm:ss,SSS}" />
            <Field name="level" pattern="%level" />
            <Field name="simpleClassName" pattern="%C{1}" />
            <Field name="className" pattern="%C" />
            <Field name="server.simple" pattern="%host{simple}" />
            <Field name="server.fqdn" pattern="%host{fqdn}" />
            <Field name="application" literal="${env:HOSTNAME}" />
        </Gelf>

第一次启动时,Filebeat将识别您配置的所有日志文件,并从一开始就开始读取它们,然后将一行又一行日志发送到ELK服务器。完成后,它将继续跟踪那些等待新日志行发送的日志文件。

更好的方法是让日志转发完成工作。Filebeat可以将整个文件从我的本地服务器移动到ELK服务器??Filebeat将跟踪所有配置的文件,并将它们发送到您的ELK服务器。在第一次运行时,它将“跟踪”从一开始就没有看到的所有新文件,因此基本上是的,它将“移动”所有日志到您的ELK服务器这方面运气好吗?