TML新增一个<output.../>表单控件,该元素用于显示输出,<output.../>元素属于某个表单,或者定义在表单内部,或者为它指定form属性。
<output.../>元素除了可以指定id、style、class、form等属性之外,还可以指定
for:该属性指定该元素将会显示哪个元素的值,该属性值应该是其他元素的id。
<output.../>生成的表单控件不会生成请求参数,它只是用于显示输出。
读:本文主要讨论如何在 Window 环境下构建 Logstash Java Output 插件的方式,并在服务器上安装和使用。
由于 Logstash 项目都是基于 Gradle 进行管理,所以我们需先在本地安装Gradle,详细步骤如下:
1、从 Gradle 官网下载 Gradle,官网提供了 binary-only(编译后版本) 和 complete(包括doc和源码) 两种版本,这里我们选择 binary-only 版本。
2、将下载下来 Gradle 压缩包进行解压
3、配置环境变量
4、在cmd命令里输入gradle -v如果能打出版本号,说明环境配置完毕
5、gradle下载的jar包仓库默认是在 C:\Users\Administrator\.gradle 目录下,我们可另建一个 D:\.gradle 作为仓库。
由于插件 API 是 Logstash 代码库的一部分,依赖于 logstash-core-x.y.z.jar ,所以我们需要拉取 Logstash 项目并进行编译生成 logstash-core-x.y.z.jar 。
1、Logstash 代码拉取
// Logstash GitHub 地址,如果拉取速度较慢,可以借助gitee同步github,本地再从gitee拉取
https://github.com/elastic/logstash
2、配置 Gradle
打开IDEA file->setting->Build,Execution,Deployment->Build Tools -> Gradle,两处地方设置。
3、在项目的根目录下执行 gradlew assemble 进行编译,编译完成之后在 G:\github\logstash\logstash-core\build\libs 目录下会生成 logstash-core-8.0.0.jar
1、拉取 logstash-output-java_output_example,并在 IDEA 中配置好 Gradle、JDK等。
// 官网提供的 logstash-output-java_output_example 地址
https://github.com/logstash-plugins/logstash-output-java_output_example
2、在该项目的根目录下创建一个 gradle.properties 文件,写入以下内容(这里的 <target_folder> 替换为 Logstash 项目根目录路径)
LOGSTASH_CORE_PATH=<target_folder>/logstash-core
3、编译、构建 Output 插件
执行以下命令将Java 插件将被打包为 Ruby gems,根据官方文档描述:window 中使用 gradlew.bat 代替 ./gradlew。
gradlew.bat gem
如果出现下图的异常,可参考 paul.devereux 的解决方案:修改 build.gradle 文件 102 行处,增加 ()。
构建失败
构建成功后在项目根目录下会生成 gem 文件
构建成功
生成的 gem
4、安装插件
在部署了 Logstash 的服务器上创建 $LOGSTASH_HOME/plugin 文件夹($LOGSTASH_HOME 为你所安装的logstash路径),将生成的 gem 上传到该目录中。之后在 $LOGSTASH_HOME/bin 目录下执行以下命令安装插件。
./logstash-plugin install --no-verify --local $LOGSTASH_HOME/plugin/logstash-output-java_output_example-1.0.1.gem
安装成功后查看插件列表
./logstash-plugin list
// $LOGSTASH_HOME/config/ 目录下复制模板文件
cp logstash-sample.conf logstash-test.conf
// 编辑
vim logstash-test.conf
写入以下内容
input {
generator { message=> "Hello world!" count=> 10 }
}
output {
java_output_example {}
}
在bin 目录执行
./logstash -f $LOGSTASH_HOME/config/logstash-test.conf
输出结果
以上便是将官方提供了简单java-outup插件进行编译构建和安装,并使用的流程步骤。基于此,我们可以通过参考官方文档关于该 demo 的详细讲解,并根据自身实际情况构建出符合需求的插件使用。
// 官网 how to write a Java output plungin 文档
https://www.elastic.co/guide/en/logstash/7.x/java-output-plugin.html#_package_and_deploy_4
感谢您的阅读,如果喜欢本文欢迎关注和转发,本头条号将坚持持续分享IT技术知识。对于文章内容有其他想法或意见建议等,欢迎提出共同讨论共同进步。
TTP请求头提供了关于请求,响应或者其他的发送实体的信息。
在本章节中我们将具体来介绍HTTP响应头信息。
应答头 | 说明 |
---|---|
Allow | 服务器支持哪些请求方法(如GET、POST等)。 |
Content-Encoding | 文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。Java的GZIPOutputStream可以很方便地进行gzip压缩,但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。因此,Servlet应该通过查看Accept-Encoding头(即request.getHeader("Accept-Encoding"))检查浏览器是否支持gzip,为支持gzip的浏览器返回经gzip压缩的HTML页面,为其他浏览器返回普通页面。 |
Content-Length | 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。如果你想要利用持久连接的优势,可以把输出文档写入 ByteArrayOutputStream,完成后查看其大小,然后把该值放入Content-Length头,最后通过byteArrayStream.writeTo(response.getOutputStream()发送内容。 |
Content-Type | 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。 |
Date | 当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。 |
Expires | 应该在什么时候认为文档已经过期,从而不再缓存它? |
Last-Modified | 文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。Last-Modified也可用setDateHeader方法来设置。 |
Location | 表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。 |
Refresh | 表示浏览器应该在多少时间之后刷新文档,以秒计。除了刷新当前文档之外,你还可以通过setHeader("Refresh", "5; URL=http://host/path")让浏览器读取指定的页面。 注意这种功能通常是通过设置HTML页面HEAD区的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path">实现,这是因为,自动刷新或重定向对于那些不能使用CGI或Servlet的HTML编写者十分重要。但是,对于Servlet来说,直接设置Refresh头更加方便。 注意Refresh的意义是"N秒之后刷新本页面或访问指定页面",而不是"每隔N秒刷新本页面或访问指定页面"。因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码则可以阻止浏览器继续刷新,不管是使用Refresh头还是<META HTTP-EQUIV="Refresh" ...>。 注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。 |
Server | 服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。 |
Set-Cookie | 设置和页面关联的Cookie。Servlet不应使用response.setHeader("Set-Cookie", ...),而是应使用HttpServletResponse提供的专用方法addCookie。参见下文有关Cookie设置的讨论。 |
WWW-Authenticate | 客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。例如,response.setHeader("WWW-Authenticate", "BASIC realm=\"executives\"")。 注意Servlet一般不进行这方面的处理,而是让Web服务器的专门机制来控制受密码保护页面的访问(例如.htaccess)。 |
*请认真填写需求信息,我们会在24小时内与您取得联系。