Jar 把额外的罐子藏起来
我正在尝试向Logstash1.4.2添加一个自定义过滤器,它是作为Debian包安装的。还安装了contrib插件()。此筛选器建立到sqlite数据库的连接,并为此使用JDBC sqlite驱动程序:Jar 把额外的罐子藏起来,jar,logstash,sqlitejdbc,Jar,Logstash,Sqlitejdbc,我正在尝试向Logstash1.4.2添加一个自定义过滤器,它是作为Debian包安装的。还安装了contrib插件()。此筛选器建立到sqlite数据库的连接,并为此使用JDBC sqlite驱动程序: require "logstash/filters/base" require "logstash/namespace" require "jdbc/sqlite3" require "java" class LogStash::Filters::MyFilter < LogStash
require "logstash/filters/base"
require "logstash/namespace"
require "jdbc/sqlite3"
require "java"
class LogStash::Filters::MyFilter < LogStash::Filters::Base
(...)
public
def register
if @database.nil?
raise "You must specify 'database => ...' in your filter"
elsif not File.exists?(@database)
raise "The database does not exist"
end
url = "jdbc:sqlite:" + @database
Java::OrgSqlite::JDBC #initialize the driver
@connection = java.sql.DriverManager.getConnection(url)
@logger.info("Using database", :path => @database)
end # def register
(...)
end # class LogStash::Filters::MyFilter
需要“日志存储/过滤器/基础”
需要“日志存储/命名空间”
需要“jdbc/sqlite3”
需要“java”
类LogStash::Filters::MyFilter…'
elsif不是文件。是否存在?(@database)
引发“数据库不存在”
终止
url=“jdbc:sqlite:”+@数据库
Java::OrgSqlite::JDBC#初始化驱动程序
@connection=java.sql.DriverManager.getConnection(url)
@info(“使用数据库”,:path=>@database)
结束#def寄存器
(...)
结束#类LogStash::Filters::MyFilter
但是,当我尝试启动logstash时,日志中出现以下错误:
“无法加载Java类org.sqlite.JDBC”
我试图将contrib插件提供的sqlite-jdbc-3.7.2.jar
文件放在几个位置,但到目前为止,我无法确定定制插件所需jar的正确位置,或者这是否是一个配置问题
有什么想法吗?虽然我找不到在Logstash 1.4中使用外部JAR的方法,但我可以通过将SQlite JDBC替换为来实现它,这已经包括在内了
require "logstash/filters/base"
require "logstash/namespace"
require "sequel"
class LogStash::Filters::MyFilter < LogStash::Filters::Base
(...)
public
def register
if @database.nil?
raise "You must specify 'database => ...' in your filter"
elsif not File.exists?(@database)
raise "The database does not exist"
end
@db = Sequel.connect("jdbc:sqlite:#{@database}")
@logger.info("Using database", :path => @database)
end # def register
(...)
end # class LogStash::Filters::MyFilter
需要“日志存储/过滤器/基础”
需要“日志存储/命名空间”
需要“续集”
类LogStash::Filters::MyFilter…'
elsif不是文件。是否存在?(@database)
引发“数据库不存在”
终止
@db=Sequel.connect(“jdbc:sqlite:{@database}”)
@info(“使用数据库”,:path=>@database)
结束#def寄存器
(...)
结束#类LogStash::Filters::MyFilter
您找到解决此问题的标准方法了吗?