不要在服务器端代码中使用System.out.println

Ole*_*ndr 50 java logging backend

我听说System.out.println用于记录目的是一种非常糟糕的做法,这可能会迫使服务器失败.

我不使用这种方法,但我非常有兴趣知道为什么System.out.println在后端代码中使用时会产生垃圾.

小智 53

System.out.println是一个IO操作,因此非常耗时.在代码中使用它的问题是,程序将等到println完成.这对小型网站来说可能不是问题,但只要你加载或多次迭代,你就会感受到痛苦.

更好的方法是使用日志框架.它们使用消息队列并仅在没有其他输出的情况下写入.

另一个好处是您可以为不同目的配置单独的日志文件.你的Ops团队会爱你的东西.

在这里阅读更多:


Ale*_*ühl 22

查看关于压力测试JEE6应用程序的Java杂志11月/ Dezember的Adam Biens 文章 - 它是免费在线的,你只需订阅它.

在第43页上,他显示,当System.out.println每个插入一个带有修复字符串的单个服务器应用程序时,每秒处理1700个事务处理的服务器应用程序仅降至800 .


Jea*_*end 19

这是一种不好的做法,因为当您的应用程序进入生产时,您无法将应用程序日志与服务器日志分开.

Prod团队希望您将应用程序生成的日志与应用程序服务器(tomcat,websphere等)中生成的日志分开:他们希望能够从应用程序本身中不同地监视应用程序服务器.

而且,使用System.out,您无法定义日志级别:在生产中,您不希望打印调试信息.


Har*_*Joy 5

它被认为是不好的,因为System.out.println();吃了更多的cpu,因此输出变慢意味着损害性能。(实际上,每个I / O操作都吃cpu)。