如何仅为慢查询启用DEBUG日志且不输出其他额外调试信息
当前日志级别设置为INFO,我希望对配置了slow_query_log_timeout_in_ms参数的慢运行查询开启日志记录。如果将日志级别调整为DEBUG,虽然会记录运行时长超过slow_query_log_timeout_in_ms的查询,但同时也会生成大量其他调试信息。我不需要除慢查询之外的任何调试内容,请问是否可以仅启用慢查询的DEBUG级别日志,而不输出其他调试信息?
原环境当前日志级别查询结果:[cassandra@localhost ~]$ nodetool getlogginglevels Logger Name Log Level ... org.apache.cassandra INFO
可以单独为慢查询开启DEBUG级别的日志,不需要调整全局org.apache.cassandra的日志级别,也不会生成其他多余的调试内容,操作方法如下:
- 临时生效(节点重启后配置会重置)
执行如下nodetool命令单独修改慢查询对应logger的日志级别:
执行后可以通过nodetool setlogginglevel org.apache.cassandra.db.SlowQueryLogger DEBUGnodetool getlogginglevels确认配置生效,其他模块日志级别保持原有INFO不变。 - 永久生效(节点重启后配置依然保留)
打开Cassandra配置目录下的logback.xml文件,添加如下配置段:
配置中的<logger name="org.apache.cassandra.db.SlowQueryLogger" level="DEBUG" additivity="false"> <!-- 可自定义appender将慢查询日志输出到独立文件,方便后续检索 --> <appender-ref ref="ASYNCDEBUGLOG"/> </logger>additivity="false"可避免慢查询日志同时写入根日志文件,减少常规日志的冗余内容。修改保存后无需重启节点,logback会自动加载新配置生效。
以上配置完成后,只有运行时长超过slow_query_log_timeout_in_ms参数阈值的慢查询会被记录,其余Cassandra模块的日志依然保持INFO级别输出,不会产生多余的调试信息。
内容的提问来源于stack exchange,提问作者nmakb
相关产品推荐
相关产品推荐

