生产环境不开启 DEBUG 级别的日志
对于部署到生产环境的程序,我们通常会将其日志级别设置为 INFO。DEBUG 级别的日志一般用于排查异常,而且通常数量较多。很少会有程序在生产环境默认开启 DEBUG 级别的日志。一个正常运行的程序,如果短时间内产生了大量日志,那么很可能是 logger 级别设置不正确。
我也见过有些程序员有意将本应归为 DEBUG 级别的日志用 INFO 级别记录,只是为了在出现业务异常时方便排查原因。当然这也会导致日志文件非常不直观,阅读体验非常差。在业务执行数量较大时,这些 INFO 日志甚至会“冲”掉目标日志。
但很多时候仅靠被持久化的业务数据记录很难排查问题原因,而 DEBUG 级别的日志能更直观得反映程序的运行逻辑。所以很多人会选择将程序的日志等级调整为 DEBUG,重现问题并获得相应日志,再恢复日志等级;这个过程中要保持程序继续运行,不能停服。
利用 Arthas 更改 Java 程序的日志级别
Arthas 是阿里推出的一个Java程序诊断工具。它利用 Java Agent 技术对运行中的Java程序进行操作。
我们可以通过 Arthas 来更改目标 logger 的日志级别。
方式1:利用 ognl 命令更改日志级别
Arthas 的 ognl命令 可用于执行 ognl 表达式。这么强大的工具当然可以更改 logger 的日志级别。
示例:
Shell代码