为什么System.out.println不好?

Has*_*ash 1 pmd

当我运行我的PMD插件时,他们说System.out.println已经使用过了.为什么System.out.println使用不好,使用PMD插件时是否有缺陷?过来这个的替代方法是什么?

Jun*_*san 6

可以使用配置打开/关闭记录器,但System.out.println不能.重要的是,记录器提供不同级别的日志记录,并且可以通过配置文件再次控制.

同样使用记录器,您可以配置旋转,清除等但不能对sysout执行相同操作.这在生产环境中,执行大量代码以及生成大量日志记录时尤其有用.


cha*_*aos 5

System.out.println()被认为是不好的记录实践。
因为

  • 无法转动 ( ON/ OFF)
  • 无法设置输出级别(TRACEDEBUGINFOWARNERROR),
    而无需重新编译代码

另一个缺点是程序的标准输出可以重定向,例如,并不总是清楚输出实际去向,例如,如果您这样做:

java SomeClass > someFile
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用日志记录 API 会对您有所帮助。

但是在某些情况下,您确实也想将某些内容打印到标准输出,在这些情况下java.io.Console,无法重定向,因此如果您正在运行命令行 java 程序,它会让您确信用户正在看到向他们发送的消息。