ChiliLogger

ChiliLogger is gem developed for internal use in Chiligum Creatives. It is used to monitor our applications and generate logs with some uniformization.

How it works


Installation

Add this line to your application's Gemfile:

gem 'chili_logger'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install chili_logger

Create a initializer file and configure ChiliLogger passing all the relevant informations:

# config/initializers/chili_logger.rb 
require 'chili_logger'

is_deactivated = Rails.env.test?

ChiliLogger.instance.config({
  deactivated: is_deactivated,
  log_env: 'development',
  log_layer: 'creatives',
  server_url: ENV['SERVER_URL'],
  cloud_provider: ENV['CLOUD_PROVIDER'],
  msg_broker_name: :rabbitmq,
  msg_broker_config: {
    user: ENV['RABBIT_USER'],
    password: ENV['RABBIT_PASSWORD'],
    ip: ENV['RABBIT_IP'],
    port: ENV['RABBIT_PORT'],
    exchange_name: ENV['RABBIT_EXCHANGE'],
    routing_key: ENV['RABBIT_ROUTING_KEY']
  },
  error_handler: :aws_sqs,
  error_handler_config: {
    region: ENV['CHILI_LOGGER_SQS_HANDLER_REGION'],
    access_key_id: ENV['CHILI_LOGGER_SQS_HANDLER_KEY_ID'],
    secret_access_key: ENV['CHILI_LOGGER_SQS_HANDLER_SECRET_KEY'],
    queue_name: ENV['CHILI_LOGGER_SQS_HANDLER_QUEUE_NAME']
  }
})

When configuring ChiliLogger, you MUST set msg_broker_name and msg_broker_config. All logs are published to this message broker and, without it, ChiliLogger can't work. For the time being, only :rabbitmq is supported.

You ALSO MUST set error_handler and error_handler_config. The error handler is the fallback option if the message broker is not available and, without it, ChiliLogger will break the application every time the message broker is down. For the time being, only :aws_sqs is supported.

Please note that if ChiliLogger tries to publish a log and both the Message Broker and the Error Handler are simultaneously down, the log will be discarded. This behavior makes sure logging problems never cause the app to break.


Basic Usage

The easiest way to use ChiliLogger is with the publish_instant_log method. It requires three arguments: desc, agent and main_content, which are used to create the log. All of them are optional arguments and have default values:

desc = { type: }
ChiliLogger.instance.publish_instant_log(desc, agent, log)


ChiliLogger.instance.publish_instant_log

Notice that ChiliLogger uses the Singleton pattern. So, to call its methods, you must first access the instance method. Calling ChiliLogger.new will return an error:

ChiliLogger.publish_instant_log(desc, agent, log)
# NoMethodError: private method `new' called for ChiliLogger:Class

ChiliLogger.instance.publish_instant_log(desc, agent, log)
# works fine

Advanced Usage


Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.


Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/chili_logger.

License

The gem is available as open source under the terms of the MIT License.