System.out.print 为什么是一种不好的实践?

miracleliu 2014-10-31 04:44:39
System.out.print 用在项目里,为什么是一种不好的实践?
...全文
2279 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
思齐小朋友 2016-02-19
  • 打赏
  • 举报
回复
我觉得上面说法都漏说了一点,System.out.println中的源码: public void println(String x) { synchronized (this) { print(x); newLine(); } } 可以发现都是同步输出的; 而Log日志打印中不是,这样效率会高一些;
文天大人 2015-12-17
  • 打赏
  • 举报
回复
引用 3 楼 sjlzcj 的回复:
[quote=引用 2 楼 miraclestar 的回复:] [quote=引用 1 楼 sjlzcj 的回复:] 大量的 sop 将产生大量的IO操作 同时在生产环境中 无法合理的控制是否需要输出
同样大量的log也会产生大量的IO; 如果不考虑区分日志级别,仅仅对比log.info()和System.out.print ,有什么本质的区别吗?[/quote] 非得错误的使用log 有什么办法 另外非要说却别,至少人家log框架可以很容易的实现 文件 DB 控制分片容量等[/quote] 呵呵,S B,像你这种人老子在开发的时候见得多了,属于见风使舵的那种,不知道区别就妄下评论去喷使用system.out的人??如果system.out各种不好,java为什么还要有这个东西?S B,不懂装懂的废物
  • 打赏
  • 举报
回复
System.out.println 在开发的时候使用 或者在你不确定异常在哪里的时候,自己调试使用。 这个时候可能比log更直观 但是项目上线之后,如果你的项目代码存在System.out.println 这种都会被定义为垃圾代码 用日志的话,能定义是异常、还是info还是 debug什么的,能提现一个程序员的编码素养哦~
tianzhenjiu 2014-11-14
  • 打赏
  • 举报
回复
使用 System.setOut(new PrintStream(new File(""))); 也可以让system.out.print打印到文件
永远的小鱼 2014-11-11
  • 打赏
  • 举报
回复
看看大牛们怎么解释的。。。
wanghualeilei 2014-11-11
  • 打赏
  • 举报
回复
调试用用无妨 到生产环境别忘了删掉就行 不删掉也没啥事 就是代码多 看着乱 不专业
猿人林克 2014-11-09
  • 打赏
  • 举报
回复
引用 11 楼 attilax 的回复:
System.out.println没关系,,放心大胆的用就是了。。“只用System.out.println” 才是不好的实践。。。 99%的System.out.println 不会影响性能的。。。 因为每个方法都有缺点。。log4j也是,没法很好的查询。。所以我们也常常把日志扔到数据库里面使用sql方便查询。。但是不能说log4j是个不好的实践。。。 我们项目常用的方法是日志数据库放一份,Log4g放一份。。各个功能点使用file Api放一份,System.out.println也根据必要尽管的用。。。 一般性能占用都不超过10% ..对于一个重要系统来说,日志就是全面的全程的测试覆盖,性能占用50%都不为过。。
说的不错,尤其是多系统集成,日志显得尤为重要,几百k的报文一样一个不落的都要有地可循,不然不是功能的问题,而是项目的问题,扯皮扯不清是项目最大的难题,而日志将成为有力证据。
wyc_ 2014-11-09
  • 打赏
  • 举报
回复
print streams ignore many issues involved in internationalization and error checking. This makes System.out easy to use in quick and dirty hacks and simple examples, while simultaneously making it unsuitable for production code, which should use the java.io.PrintWriter class instead。
attilax 2014-11-08
  • 打赏
  • 举报
回复
System.out.println没关系,,放心大胆的用就是了。。“只用System.out.println” 才是不好的实践。。。 99%的System.out.println 不会影响性能的。。。 因为每个方法都有缺点。。log4j也是,没法很好的查询。。所以我们也常常把日志扔到数据库里面使用sql方便查询。。但是不能说log4j是个不好的实践。。。 我们项目常用的方法是日志数据库放一份,Log4g放一份。。各个功能点使用file Api放一份,System.out.println也根据必要尽管的用。。。 一般性能占用都不超过10% ..对于一个重要系统来说,日志就是全面的全程的测试覆盖,性能占用50%都不为过。。
showhunter74 2014-11-06
  • 打赏
  • 举报
回复
因为System.out.println 只打印在控制台,打印完就过去了。也就是说除非你一直盯着程序跑,你才能看到System.out.println出的内容。而Logger可以将内容写入日志方便程序运行一段时候后排查问题。 如果是测试阶段用System.out.println 问题也不大。而如果以及是在正式运行的程序System.out.println显然没办法帮你查错。
Inhibitory 2014-11-06
  • 打赏
  • 举报
回复
学习的时候可以用,但是开发的时候还是用日志,最简单的一条,System.out.println输出的内容不能保存到文件,光这一点就足以不推荐使用。
S117 2014-11-05
  • 打赏
  • 举报
回复
能不用尽量不用,偶尔用来调试调试也无妨
missMeyo 2014-11-05
  • 打赏
  • 举报
回复
因为system这种语句是硬编码,不能控制输出,像log4j的日志框架可以控制需要的输出的日志等级。
Magical茏 2014-10-31
  • 打赏
  • 举报
回复
System.out.print 在编写的时候 随便写 项目一旦上线 就肯定不用System.out.print了
whos2002110 2014-10-31
  • 打赏
  • 举报
回复
引用 2 楼 miraclestar 的回复:
[quote=引用 1 楼 sjlzcj 的回复:] 大量的 sop 将产生大量的IO操作 同时在生产环境中 无法合理的控制是否需要输出
同样大量的log也会产生大量的IO; 如果不考虑区分日志级别,仅仅对比log.info()和System.out.print ,有什么本质的区别吗?[/quote] 如果是开发过程中,System.out.print 比 log更方便查看日志。 但是绝大部分情况下, 项目是脱离ide启动的, 你总不能一直盯着tomcat控制台看打印语句呀。
  • 打赏
  • 举报
回复
日志框架其实挺好用的,比如Email都能帮你搞定。
sjlzcj 2014-10-31
  • 打赏
  • 举报
回复
引用 2 楼 miraclestar 的回复:
[quote=引用 1 楼 sjlzcj 的回复:] 大量的 sop 将产生大量的IO操作 同时在生产环境中 无法合理的控制是否需要输出
同样大量的log也会产生大量的IO; 如果不考虑区分日志级别,仅仅对比log.info()和System.out.print ,有什么本质的区别吗?[/quote] 非得错误的使用log 有什么办法 另外非要说却别,至少人家log框架可以很容易的实现 文件 DB 控制分片容量等
miracleliu 2014-10-31
  • 打赏
  • 举报
回复
引用 1 楼 sjlzcj 的回复:
大量的 sop 将产生大量的IO操作 同时在生产环境中 无法合理的控制是否需要输出
同样大量的log也会产生大量的IO; 如果不考虑区分日志级别,仅仅对比log.info()和System.out.print ,有什么本质的区别吗?
sjlzcj 2014-10-31
  • 打赏
  • 举报
回复
大量的 sop 将产生大量的IO操作 同时在生产环境中 无法合理的控制是否需要输出

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧