在使用kettle进行数据分析和清洗时日志非常多而且杂乱,使用原有的日志有时找不到异常的位置,有时日志不够详细,说简单一点就是日志不是我们想要的。因而对kettle日志进行相应的管理就想得尤为重要了。大家都知道java最常用的日志管理包log4j可以很好地实现java日志的管理,然而kettle是使用java开发的,因而log4j是个不二的选择。好了说了这么多,下面看看kettle怎么使用log4j进行日志的管理吧。

1、kettle加载和使用log4j

在转换的JavaScript中添加log4j的支持

//Script here//updateOuputLog();//confFile 日志配置文件路径//增加日志输出文件//通过/../conf/log.xml文件配置日志输出

functionupdateOutputLog(confFile){var first = getVariable("FIRST_TIME_UPDATE_LOG", "true");if(first == "true"){

logWriter=org.pentaho.di.core.logging.LogWriter.getInstance();var softPath =getThisSoftPath();

setVariable("WORKDIR", softPath, "s");//设置日志路径变量

var logConf = softPath + "/../conf/log.xml";if(confFile != null && confFile != ""){

logConf= softPath + "/" +confFile;

}else{if(!fileExists(logConf)){

logConf= softPath + "/log.xml";

}if(!fileExists(logConf)){

logConf= softPath + "/conf/log.xml";

}

}

writeToLog("m", "======logConfPath====>"+logConf);

org.apache.log4j.xml.DOMConfigurator.configure(logConf);var logger = org.apache.log4j.Logger.getLogger("kettle_log");var appenders =logger.getAllAppenders();while(appenders.hasMoreElements()){var appender =appenders.nextElement();

writeToLog("m", "======add==log====>"+appender.getName());

logWriter.addAppender(appender);

}

setVariable("FIRST_TIME_UPDATE_LOG", "false", "r");

}

}//Alert(getThisSoftPath());//返回程序所在目录 不带前缀file:

functiongetThisSoftPath(){var osName = java.lang.System.getProperty("os.name").toLowerCase();var path = getVariable("Internal.Transformation.Filename.Directory", "");if(osName.indexOf("windows") >= 0){//WINDOWS系统

path = path.substring(8);

}else{

path= path.substring(7);

}returnpath;

}functiongetConfigPath(softDir,confPath,splitStr){var arr =confPath.split(splitStr);var str = softDir+arr[0];for(var i=1; i

str= str + splitStr + softDir+arr[i];

}

}//Alert(str);

returnstr;

}

2、准备log4j配置文件log.xml

此处需要注意log4j日志的存放路径,路径由变量${WORKDIR}控制,存放路径为项目根目录下的log目录。

3、测试

运行结果:

2011-06-08 09:50:28,897 INFO (LogWriter.java:450) -> 设置默认配置文件.0 - ======add==log====>kettle_error

2011-06-08 09:50:28,897 INFO (LogWriter.java:450) -> 设置默认配置文件.0 - 增加配置日志成功

2011-06-08 09:50:28,912 INFO (LogWriter.java:450) -> 设置默认配置文件.0 - E:/test/src/../conf/config_static.properties

2011-06-08 09:50:28,912 INFO (LogWriter.java:450) -> 设置默认配置文件.0 - 完成处理 (I=0, O=0, R=1, W=1, U=1, E=0

2011-06-08 09:50:28,943 INFO (LogWriter.java:450) -> 拆分路径 2.0 - 完成处理 (I=0, O=0, R=1, W=1, U=1, E=0

2011-06-08 09:50:28,943 INFO (LogWriter.java:450) -> 读取配置文件.0 - 配置文件:TO_DB_PWD1=test

2011-06-08 09:50:28,943 INFO (LogWriter.java:450) -> 配置文件输入.0 - 完成处理 (I=20, O=0, R=1, W=20, U=20, E=0

2011-06-08 09:50:28,943 INFO (LogWriter.java:450) -> 读取配置文件.0 - 配置文件:DEST_DB_UNAME2=test

注:11年测试的日志文件

java kettle log_kettle使用log4j管理输出日志相关推荐

  1. java kettle 日志 log_kettle使用log4j管理输出日志

    标签: 在使用kettle进行数据分析和清洗时日志非常多而且杂乱,使用原有的日志有时找不到异常的位置,有时日志不够详细,说简单一点就是日志不是我们想要的.因而对kettle日志进行相应的管理就想得尤为 ...

  2. log4j不输出日志的解决方案

    log4j不输出日志的解决方案 参考文章: (1)log4j不输出日志的解决方案 (2)https://www.cnblogs.com/westward/p/6516406.html (3)https ...

  3. kettle 内存设置_【转】kettle 的内存设置及输出日志的时间类型

    本文转载自:http://blog.csdn.net/dqswuyundong/archive/2010/10/19/5952004.aspx 设置kettle的内存 REM ************ ...

  4. python 创建目录时间_python实现根据当前时间创建目录并输出日志

    举个例子:比如我们要实现根据当前时间的年月日来新建目录来存放每天的日志,当前时间作为日志文件名称:代码如下: #!/usr/bin/env python3 # _*_ coding: utf-8 _* ...

  5. log4j不打印日志

    客户说log4j不输出日志了,配置文件和日志级别没问题的,权限都有, 最终排查定位发现缺少jar包 slf4j-log4j12-1.7.25.jar slf4j-api-1.7.25.jar

  6. java 统一日志_基于log4j实现统一日志管理

    背景: 一般操作系统级的告警有相关的软件,但我们应用级日志往往无法统一监控.分析.因为最近的项目是比较大的一个平台,有七.八个子系统,weblogic域也有三.四个.如果用户自身能够实时监控到应用级致 ...

  7. log4j linux如果日志目录不存在,Java日志库学习笔记

    (未完成,待修改) 一.安装Log4j log4j的库文件可以在官方网站下载: 二.log4j.properties的目录搜索规则 在src/目录下创建一个log4j.properties文件,即LC ...

  8. java打印设备集中管理_Kafka+Log4j实现日志集中管理

    记录如何使用Kafka+Log4j实现集中日志管理的过程. 引言 前面写的<Spring+Log4j+ActiveMQ实现远程记录日志--实战+分析>得到了许多同学的认可,在认可的同时,也 ...

  9. 使用java自带的日志管理_java日志管理

    1.相关概念 日志统一框架(日志门面):apache commons logging.slf4j 日志实现框架(实现层):JDK自带的logging(java.util.logging).log4j. ...

最新文章

  1. 比ajax更好技术,ajax 技术
  2. word饼图如何画引导线_网络授课如何手写、标注?
  3. ACM模板——并查集
  4. python测验4_python接口自动化测试四:代码发送HTTPS请求
  5. Docker配置CTF中的靶机环境
  6. vue添加html开启服务器_Vue 项目(HTML5 History 模式) 部署服务器
  7. java创建线程哪种方法最好_Java创建线程的三种方法比较
  8. 虚拟机安装linux输入密钥,远程连接虚拟机并做密钥认证
  9. 北斗GNSS无人巡检车辆的高精度定位定向应用方案
  10. 基于k8s的CICD实现
  11. html怎么让图片变灰色,css如何使图片变灰
  12. 数学建模 —— 规划模型
  13. 计算机顶会:投稿时间 会议介绍
  14. 如何在终端里面使用ping来查局域网活动ip
  15. 字典 列表和集合习题
  16. Foldor for Mac(文件夹图标样式修改工具)
  17. AIDevOps离我们有多远?
  18. 超级简单的小程序赚钱方法,不需要懂任何技术,却没有几个人知道
  19. “无顶背离不抛盘,无底背离不抢筹”,这才是MACD的精髓
  20. 中东欧歌舞齐聚昆山春晚 不出国门置身欧洲

热门文章

  1. c++智能指针的设计思想
  2. QT的QBoxPlotSeries类的使用
  3. apache php 单入口,apache配置php实现单一入口方法
  4. Kylin安装,Kylin网页版教程学习
  5. SQLite Select 语句(http://www.w3cschool.cc/sqlite/sqlite-select.html)
  6. 3.非关系型数据库(Nosql)之mongodb:升降序排序,排序分页,$all,$in,$nin,$or,$nor, $exists,游标,更新(update,$set,$unset,$inc)
  7. struts,ognl,valuestack
  8. Excel单样本T检验
  9. C++中结构体、联合体、枚举的区别
  10. Kubernetes基础文档(链接,下载,安装,架构)