Fork me on GitHub

kettle作业中的js如何写日志文件

在kettle作业中JavaScript脚本有时候也扮演非常重要的角色,此时我们希望有一些日志记录。下面是job中JavaScript记录日志的方式。

job的js写日志的方法。

得到日志输出实例

1
org.pentaho.di.core.logging.LogWriter.getInstance();

按照日志的级别输出:

1
2
3
4
5
6
7
8
9
10
11
12
public void logMinimal(String subject, String message, Object... args)
{ println(LOG_LEVEL_MINIMAL, subject, message, args) ; }
public void logBasic(String subject, String message, Object... args)
{ println(LOG_LEVEL_BASIC, subject, message, args) ; }
public void logDetailed(String subject, String message, Object... args)
{ println(LOG_LEVEL_DETAILED, subject, message, args); }
public void logDebug(String subject, String message, Object... args)
{ println(LOG_LEVEL_DEBUG, subject, message, args); }
public void logRowlevel(String subject, String message, Object... args)
{ println(LOG_LEVEL_ROWLEVEL, subject, message, args); }
public void logError(String subject, String message, Object... args)
{ println(LOG_LEVEL_ERROR, subject, message, args); }

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var mpType = parent_job.getVariable("IMPTYPE");
var sStart = parent_job.getVariable("STARTTIME");
var sEnd = parent_job.getVariable("ENDTIME");
 
var sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
var cal = new java.util.Calendar();
 
var start = sdf.parse(sStart);
cal.setTime(start);
var month1 = cal.get(cal.MONTH);
 
var end = sdf.parse(sEnd);
cal.setTime(end);
cal.add(Calendar.DATE, -1);
var month2 = cal.get(cal.MONTH);
 
var log = org.pentaho.di.core.logging.LogWriter.getInstance();
 
log.logMinimal("<周统计做特殊处理>", "是否跨月:startTime-->" + sStart+ "; endTime-->" + sEnd + "; startMonth-->" + month1 + ";endMonth-->" + month2, "");
if((10080 == mpType) && (month1 != month2)){
  var nextMonthPrefix = parent_job.getVariable("NEXTMONTABPRE");
  parent_job.setVariable("MONTHTABPRE", nextMonthPrefix);
  log.logMinimal("<周统计做特殊处理>", "!!!该周跨月!!!MONTHTABPRE-->" + nextMonthPrefix + "; startMonth-->" + month1 + ";endMonth-->" + month2, "");
}
 
true;

 

 

posted @   秋楓  阅读(6378)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示