是否有任何我可以在HAWQ日志中获得调试消息的gc或命令?现在,我只能得到ERROR或FATAL消息,但不能得到任何DEBUG消息。如何在日志文件中打印这些DEBUG消息?
可以在hawq主数据目录的postgresql .conf中设置log_min_messages级别。日志级别可以是以下值,按详细程度递减的顺序排列:# debug5# debug4# debug3# debug2# debug1#信息#注意#警告#错误#日志#致命#恐慌
修改postgresql .conf需要重启集群。但是,如果您只想在此会话中记录调试信息,则可以在PSQL会话中设置GUC log_min_messages。
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源代码中添加它。
DEBUG可能有两个含义,一个是hawq代码中的DEBUG日志级别,由ztao1987回答,另一个是当您使用gdb/lldb进行调试时,其中是打印函数的输出。答案也在主/段日志中。stdout已经被HAWQ重定向到日志文件,例如,当你想在lldb中打印一个元表时,只需输入"expr print_slot(yourslot)",然后tail -f your.log,槽信息将打印在屏幕上。