ruby - Logging in Rails, is there any performance hit? -
rails comes bundled ruby's logger class in standard library. available log levels are: :debug, :info, :warn, :error, , :fatal.
i wondering if add extensive logging in rails application log level set :debug development , testing, there performance impact when running in production logging turned-off or set @ higher level, such config.log_level = :fatal?
the short answer logging have performance impact, particularly when logging disk. however, there few subtleties.
firstly, using :debug level have greater performance penalty :fatal, far greater number of strings being evaluated , written log output (e.g. disk).
another potential pitfall if have many calls in code:
logger.debug = "my string debug #{variable}" there performance impact if allowed output level doesn't include debug. reason ruby has evaluate these strings, includes instantiating heavy string object , interpolating variables, , takes time.
therefore, it's recommended pass blocks logger methods, these evaluated if output level same or included in allowed level (i.e. lazy loading). same code rewritten be:
logger.debug { "my string debug #{variable}" } the contents of block, , therefore string interpolation, evaluated if debug enabled. performance savings noticeable large amounts of logging, it's practice employ.
you can read more in logger docs.
Comments
Post a Comment