如何从安装在 DB2 中的 Java UDF 进行日志记录

Posted

技术标签:

【中文标题】如何从安装在 DB2 中的 Java UDF 进行日志记录【英文标题】:How to log from Java UDF installed in DB2 【发布时间】:2018-11-28 09:24:30 【问题描述】:

我在 DB2 10.5 中安装了一个 JAVA UDF,一切正常。 但是我有一些捕获块,我想在其中记录一些信息以及堆栈跟踪。问题是我如何记录它们以及这些信息将打印在哪个 db2 日志文件中。

我尝试使用 System.out.println 并查看 db2diag 日志文件,但那里没有打印任何内容。

【问题讨论】:

【参考方案1】:

在 Db2-LUW 的 java 例程中,System.out.println 的输出将永远不会出现在 Db2 诊断文件中,如果您明智,您不应该强制这样做。

处理它的方法不止一种。

一种方法是让您的例程在调用 System.out.println 之前重定向标准输出。 示例

System.setOut(new PrintStream(new FileOutputStream("java_routine_log.txt")));

在上面的示例中,文件名是不合格的,因此默认情况下它将出现在实例诊断目录中(默认情况下 ~$DB2INSTANCE/sqllib/db2dump )。

另一种方法是使用可配置的日志记录框架,让您可以控制日志记录位置和其他详细信息以进行跟踪。

还有其他方式。

【讨论】:

以上是关于如何从安装在 DB2 中的 Java UDF 进行日志记录的主要内容,如果未能解决你的问题,请参考以下文章

从外部 UDF 调用 db2ReadLog

DB2 7.2 Java UDF 不在 Classpath 中

如何显示 DB2 SQL UDF 的源代码

iSeries DB2 SQL - 使用 CASE 语句更新 UDF 中的变量

如何将复杂的外部变量(例如映射值)从 Spark 与 Java 中的驱动程序传递给 UDF?

Spark SQL:如何使用 JAVA 从 DataFrame 操作中调用 UDF