java - 性能问题 System.out.println ("log information ")或使用 log4j 记录器文件?

标签 java web log4j

谁能告诉我在网络应用程序中哪种是存储日志信息的更好方法。如果我们在内部使用tomcat服务器,日志信息将存储在日志文件中。使用 system.out.println("log information here") 或 log4j 日志文件来存储日志来记录应用程序数据控制台以进行故障排除的更好方法是什么。 当我们处理大型应用程序时,哪一个可以提供更好的性能?

最佳答案

Which one gives better performance when we are dealing the large application?

除了使用记录器的明显原因(可定制的输出、过滤、文件处理等)之外,记录器通常会产生更好的性能,原因如下:

  • 记录器可以提供有关日志级别的信息,即,如果您必须构建一些昂贵的消息进行调试,那么如果调试级别不可用,您可以跳过它:

    if( log.isDebugEnabled() ) { log.debug( buildSomeExpectiveOutput() ); }

    如果启用了调试级别日志记录,则只会调用 buildSomeExpectiveOutput();如果未启用调试级别日志记录,则会节省成本(例如在大多数生产系统中)。

  • 写入控制台可能会减慢应用程序的速度,因为执行可能是同步的,而大多数记录器异步写入日志

关于java - 性能问题 System.out.println ("log information ")或使用 log4j 记录器文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22327884/

相关文章:

java - Polarion ALM SDK API getWorkItem()

java - Map 的参数化类型键

c# - Web 上的串行端口

Java Spring Boot Web 应用程序 : Handling 404 Exception

Java floatToRawIntBits/intBitsToFloat 或 doubleToRawLongBits/longBitsToDouble 等同于 ruby​​?

java - 尝试从 Java 源代码调用 JavaScript 函数

debugging - Angular 2 错误和 Typescript - 如何调试?

java - Spring 中的动态 Apache log4j

apache-spark - 无法从 Spark Streaming 登录

java - 从 log4j1 迁移到 log4j2