如何在日志中获取DEBUG消息HAWQ?

时间:2016-06-28 07:02:40

标签: hawq

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

4 个答案:

答案 0 :(得分:0)

您可以在hawq主数据目录的postgres.conf中设置log_min_messages级别。日志级别可以是以下值,以减少细节的顺序:                     #debug5                     #debug4                     #debug3                     #debug2                     #debug1                     #info                     # 注意                     # 警告                     #错误                     #log                     #datal                     #panic

答案 1 :(得分:0)

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

答案 2 :(得分: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重启群集-a")
  • 或使用会话级调试("设置log_min_messages = DEBUG_LEVEL")

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

答案 3 :(得分:0)

您所指的DEBUG可能有两个含义,一个是hawq代码中的DEBUG日志级别,由ztao1987回答,另一个是使用gdb / lldb进行调试时,其中是print函数的输出。 答案也在主/段日志中。 stdout已被HAWQ重定向到日志文件,例如,当你想在lldb中打印一个tupletableslot时,只需输入" expr print_slot(yourslot)",然后输出-f your.log,插槽信息将打印在屏幕上。