Module: Trinidad::Logging
- Defined in:
- lib/trinidad/logging.rb
Defined Under Namespace
Classes: DefaultFormatter, FileHandler, MessageFormatter
Constant Summary collapse
- JUL =
Java::JavaUtilLogging
- LogFactory =
Java::OrgApacheJuliLogging::LogFactory
- @@configured =
nil
Class Method Summary collapse
-
.configure(log_level = nil) ⇒ Object
Configure the “global” Trinidad logging.
-
.configure!(log_level = nil) ⇒ Object
Force logging (re-)configuration.
-
.configure_web_app(web_app, context) ⇒ Object
Configure logging for a web application.
Class Method Details
.configure(log_level = nil) ⇒ Object
Configure the “global” Trinidad logging.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/trinidad/logging.rb', line 13 def self.configure(log_level = nil) return false if @@configured root_logger = JUL::Logger.getLogger('') level = parse_log_level(log_level, :INFO) out_handler = JUL::ConsoleHandler.new out_handler.setOutputStream JRuby.runtime.out out_handler.formatter = console_formatter err_handler = JUL::ConsoleHandler.new err_handler.setOutputStream JRuby.runtime.err err_handler.formatter = console_formatter err_handler.level = level.intValue > JUL::Level::WARNING.intValue ? level : JUL::Level::WARNING # only >= WARNING on STDERR root_logger.synchronized do root_logger.handlers.to_a.each do |handler| root_logger.remove_handler(handler) if handler.is_a?(JUL::ConsoleHandler) end root_logger.add_handler(out_handler) root_logger.add_handler(err_handler) root_logger.level = level end adjust_tomcat_loggers @@configured = true root_logger end |
.configure!(log_level = nil) ⇒ Object
Force logging (re-)configuration.
46 47 48 49 |
# File 'lib/trinidad/logging.rb', line 46 def self.configure!(log_level = nil) @@configured = false configure(log_level) end |
.configure_web_app(web_app, context) ⇒ Object
Configure logging for a web application.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/trinidad/logging.rb', line 52 def self.configure_web_app(web_app, context) param_name, param_value = 'jruby.rack.logging', 'JUL' # 1. delegate (jruby-rack) servlet log to JUL if set_value = web_app_context_param(web_app, context, param_name) return nil if set_value.upcase != param_value else context.add_parameter(param_name, param_value) end # 2. use Tomcat's JUL logger name (unless set) : param_name = 'jruby.rack.logging.name' unless logger_name = web_app_context_param(web_app, context, param_name) # for a context path e.g. '/foo' most likely smt of the following : # org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/foo] context.add_parameter(param_name, logger_name = context.send(:logName)) end configure # make sure 'global' logging if configured logger = JUL::Logger.getLogger(logger_name) # exclusive for web app # avoid duplicate calls - do not configure our FileHandler twice : return false if logger.handlers.find { |h| h.is_a?(FileHandler) } level = parse_log_level(web_app.log, nil) logger.level = level # inherits level from parent if nil # delegate to root (console) output only in development mode : logger.use_parent_handlers = ( web_app.environment == 'development' ) prefix, suffix = web_app.environment, '.log' # {prefix}{date}{suffix} file_handler = FileHandler.new(web_app.log_dir, prefix, suffix) file_handler.rotatable = true # {prefix}{date}{suffix} file_handler.formatter = web_app_formatter logger.add_handler(file_handler) logger end |