首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >调用java类的Logstash自定义输入插件

调用java类的Logstash自定义输入插件
EN

Stack Overflow用户
提问于 2016-12-29 09:36:54
回答 2查看 1.1K关注 0票数 1

我已经为logstash编写了一个自定义过滤器插件来调用一个java类。

要求:

输入插件:从队列中读取

自定义插件:对于队列中的每条消息,调用java类

代码语言:javascript
代码运行次数:0
运行
复制
**Code:**

# encoding: utf-8
require "logstash/filters/base"
require "logstash/namespace"
require "java"
require "test.jar"

class LogStash::Filters::Example < LogStash::Filters::Base

  config_name "example"

  public
  def register
  end # def register

  public
  def filter(event)
      object = Java::Com.test.Test.new
      a = object.readMessage(event.get("message"))
      event.set("message",a)

    filter_matched(event)
  end # def filter

end # class LogStash::Filters::Example

问题:有一种方法可以只实例化java类一次吗?对于从队列中读取的每一条消息,我不希望创建java类的新实例,而是在logstash启动期间实例化它,并对所有传入消息使用相同的对象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-29 16:34:14

是。做那件事很容易。您可以在ruby类中创建一个实例变量来保存Java对象,并在ruby类的register方法中实例化该对象。在filter方法中,使用实例变量访问java对象。

下面的代码应该适用于您。

代码语言:javascript
代码运行次数:0
运行
复制
# encoding: utf-8
require "logstash/filters/base"
require "logstash/namespace"
require "java"
require "test.jar"

class LogStash::Filters::Example < LogStash::Filters::Base

  config_name "example"

  public
  def register
    @object = Java::Com.test.Test.new
  end # def register

  public
  def filter(event)
      a = @object.readMessage(event.get("message"))
      event.set("message",a)
    filter_matched(event)
  end # def filter
end # class LogStash::Filters::Example

记住在变量名之前使用@,使其成为Ruby中的实例变量。

票数 1
EN

Stack Overflow用户

发布于 2017-04-10 22:18:50

另一种选择是使用Ruby类;

代码语言:javascript
代码运行次数:0
运行
复制
require 'singleton'

class Logger
  include Singleton

  def initialize
    @log = File.open("log.txt", "a")
  end

  def log(msg)
    @log.puts(msg)
  end
end

Logger.instance.log('message 2')

您可以在初始化方法中执行所需的操作,然后只需要类的所有实例来重复调用它,而无需每次初始化它。

更多资料可在以下网址查阅:

1) 单例模式

2) Ruby类文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41376870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档