0

是否有任何 GUC 或命令可以在 HAWQ 日志中获取调试消息?现在,我只能收到 ERROR 或 FATAL 消息,但无法收到任何 DEBUG 消息。如何在日志文件中打印这些调试消息?

4

4 回答 4

0

您可以在 hawq 主数据目录的 postgres.conf 中设置 log_min_messages 级别。日志级别可以是以下值,按细节递减的顺序排列:#debug5 #debug4 #debug3 #debug2 #debug1 #info #notice #warning #error #log #fatal #panic

于 2016-06-28T07:29:48.713 回答
0

apache hawq 的不同组件支持不同级别的调试消息。

总体支持水平如下。详情可参考https://github.com/apache/incubator-hawq/blob/master/src/include/utils/elog.h

/* Error level codes */
Level        Value
------------------
DEBUG5          10
DEBUG4          11
DEBUG3          12
DEBUG2          13
DEBUG1          14
LOG             15
COMMERROR       16
INFO            17
NOTICE          18
WARNING         19
ERROR           20
FATAL           21
PANIC           22

要获得您想要的 DEBUG 消息,您需要检查您关心的组件有关受支持的调试级别。然后在运行查询之前,使用以下设置获取调试信息:

  • GUC 的持久级别(“hawq config -c log_min_messages -v DEBUG_LEVEL”,然后是“hawq restart cluster -a”)
  • 或使用会话级调试(“set log_min_messages = DEBUG_LEVEL”)

如果最高调试级别也找不到足够的日志信息,可以尝试自己在apache hawq源代码中添加。

于 2016-07-04T09:52:13.703 回答
0

你说的DEBUG可能有两个意思,一个是hawq代码中的DEBUG日志级别,由ztao1987回答,另一个是你用gdb/lldb调试的时候,你的print函数的输出在哪里。答案也在主/段日志中。stdout 已经被 HAWQ 重定向到 log 文件,例如,当你想在 lldb 中打印一个 tupletableslot 时,只需键入“expr print_slot(yourslot)”,然后 tail -f your.log,就会在屏幕上打印槽信息.

于 2016-07-07T05:57:59.367 回答
0

如果您更改 postgres.conf,它需要重新启动集群。但是,如果您只想在此会话中记录调试信息,则可以在 PSQL 会话中设置 GUC log_min_messages。

于 2016-07-01T01:58:02.597 回答