关于 Kettle 转换、作业日志自动配置的解决方案
在一个项目中,一般情况下 Kettle 所有的转换和作业日志应该集中放在一起,便于管理和维
护。但在使用 Kettle 的过程中,发现每次新配置一个转换或作业的时候,转换或作业的日志
需要重新配置一次,感觉比较麻烦。Kettle 不能把日志配置保存成一个默认值,或者在什么
地方可以配置,查阅相关资料,一直没找到好的解决方法。分析 Kettle 相关系统表,发现借
助数据库功能,可以实现 Kettle 转换或作业日志自动配置问题。
Kettle 的转换日志配置如下:
Kettle 的作业日志配置如下:
按照正常流程,每次新建一个转换或作业的时候,都需要重新配置一次日志,有时还会忘记,
极大影响了的工作效率。
需要在日志数据库上创建两个触发器,即可实现上述功能。
作业日志配置
create or replace trigger r_job_log
after insert on r_job_attribute
declare
/*
*Kettle 作业操作-日志配置触发器
*作者:青蛙王子
*联系方式(QQ):82322156
*日期2012-07-11
*/
v_job integer;
/*
*日志表:与所建的日志表对应
*/
v_job_log varchar2(20):='TB_JOB_LOG';
v_job_entry_log varchar2(20):='TB_JOB_ENTRY_LOG';
v_job_channel_log varchar2(20):='TB_JOB_CHANNEL_LOG';
/*
*数据库连接名
*/
v_database_name varchar2(20):='TEST';
begin
select max(t.id_job) into v_job from R_JOB t;
--更新日志表
update r_job_attribute set value_str =v_job_log where
code='JOB_LOG_TABLE_TABLE_NAME' and id_job=v_job;
update r_job_attribute set value_str =v_job_entry_log where
code='JOB_ENTRY_LOG_TABLE_TABLE_NAME' and id_job=v_job;
update r_job_attribute set value_str =v_job_channel_log where
code='CHANNEL_LOG_TABLE_TABLE_NAME' and id_job=v_job;
--更新数据库连接
update r_job_attribute set value_str =v_database_name where
code='JOB_LOG_TABLE_CONNECTION_NAME' and id_job=v_job;
update r_job_attribute set value_str =v_database_name where
code='JOB_ENTRY_LOG_TABLE_CONNECTION_NAME' and id_job=v_job;
update r_job_attribute set value_str =v_database_name where
code='CHANNEL_LOG_TABLE_CONNECTION_NAME' and id_job=v_job;
end r_job_log;
转换日志配置:
create or replace trigger r_trans_log
after insert on r_trans_attribute
declare
/*
*Kettle 转换操作-日志配置触发器
*作者:青蛙王子
*联系方式(QQ):82322156
*日期2012-07-11
*/
v_trans integer;
/*
*日志表:与所建的日志表对应
*/
v_trans_log varchar2(20):='TB_TRANS_LOG';
v_STEP_LOG varchar2(20):='TB_STEP_LOG';
v_performance_log varchar2(20):='TB_PERFORMANCE_LOG';
v_channel_log varchar2(20):='TB_CHANNEL_LOG';
/*
*数据库连接名
*/
v_database_name varchar2(20):='TEST';
begin
select max(t.id_transformation) into v_trans from r_transformation t;
--更新日志表
update r_trans_attribute set value_str =v_trans_log where
code='TRANS_LOG_TABLE_TABLE_NAME' and id_transformation =v_trans;
update r_trans_attribute set value_str =v_STEP_LOG where
code='STEP_LOG_TABLE_TABLE_NAME' and id_transformation =v_trans;
update r_trans_attribute set value_str =v_performance_log where
code='PERFORMANCE_LOG_TABLE_TABLE_NAME' and id_transformation
=v_trans;
update r_trans_attribute set value_str =v_CHANNEL_LOG where
code='CHANNEL_LOG_TABLE_TABLE_NAME' and id_transformation =v_trans;
--更新数据库连接
update r_trans_attribute set value_str =v_database_name where
code='TRANS_LOG_TABLE_CONNECTION_NAME' and id_transformation
=v_trans;
update r_trans_attribute set value_str =v_database_name where
code='STEP_LOG_TABLE_CONNECTION_NAME' and id_transformation
=v_trans;
update r_trans_attribute set value_str =v_database_name where
code='PERFORMANCE_LOG_TABLE_CONNECTION_NAME' and id_transformation
=v_trans;
update r_trans_attribute set value_str =v_database_name where
code='CHANNEL_LOG_TABLE_CONNECTION_NAME' and id_transformation
=v_trans;
end r_trans_log;
测试如下:
新建一个转换:
然后关闭转换窗口,在重新打开该转换,就可以看到日志自动配置完成。
运行该转换,输出转换日志:
2012 年 7 月 11 日星期三
青蛙王子:82322156