Giter Club home page Giter Club logo

grizzled-rails-logger's Introduction

grizzled-rails-logger

Grizzled Rails Logger is a Ruby gem that provides an add-on for the stock Rails 3 logger.

The Grizzled::Rails::Logger module augments the Rails 3 ActiveSupport::BufferedLogger class, providing some additional capabilities, including:

  • Configurable colorized logging (colorized by severity).
  • Simple timestamp configuration.
  • The ability to include the PID in each message.
  • The ability to flatten the log output, removing spurious newlines, so that each message occupies only one line.
  • Anexception message that dumps an exception backtrace to the log

Installation for Rails 3

Add the following to your Gemfile, and run bundle install:

gem 'grizzled-rails-logger'

If you want the development version of the gem, use:

gem 'grizzled-rails-logger', github: 'bmc/grizzled'

This gem is specific to Rails 3, but it should work fine with either Ruby 1.9 or Ruby 1.8.7.

Documentation

Complete documentation for this software is available on the home page

grizzled-rails-logger's People

Contributors

bmc avatar gmile avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

grizzled-rails-logger's Issues

remove new line after exception backtrace?

When I use logger.exception(), a new line seems to follow the backtrace, even if I have :flatten set to true. Is there a way to remove or skip that final new line character?

log_tags configuration doesn't work

The documentation claims to support Rails 3.2 tagged logging through the log_tags configuration. This doesn't appear to work, and I find no occurrence of the string "log_tags" in the source.

A documentation comment

If your app has a model called "Term" this plugin will break it when it pulls in the ansi term stuff. I work on an academic app that uses the work term to represent things like quarter, session, semesters, etc.

The output of the gem looks nice but I can not use it which is to bad.

Thanks for your work.

unit test failing with rails 3.2.6

I'm getting an exception when running my unit tests.

undefined method `>' for nil:NilClass
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/grizzled-rails-logger-0.1.4/lib/grizzled/rails/logger.rb:95:in `do_add'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/grizzled-rails-logger-0.1.4/lib/grizzled/rails/logger.rb:89:in `add_with_grizzling'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/buffered_logger.rb:90:in `info'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/railtie.rb:80:in `block (2 levels) in <class:Railtie>'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/lazy_load_hooks.rb:26:in `block in on_load'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/lazy_load_hooks.rb:25:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/lazy_load_hooks.rb:25:in `on_load'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.6/lib/active_record/railtie.rb:74:in `block in <class:Railtie>'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/initializable.rb:30:in `instance_exec'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/initializable.rb:30:in `run'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/initializable.rb:55:in `block in run_initializers'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/initializable.rb:54:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/initializable.rb:54:in `run_initializers'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/application.rb:136:in `initialize!'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/railtie/configurable.rb:30:in `method_missing'
environment.rb:5:in `<top (required)>'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `block in require'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:236:in `load_dependency'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `require'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/application.rb:103:in `require_environment!'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/application.rb:292:in `block (2 levels) in initialize_tasks'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `block in invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `block in invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `block in invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `block in invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
C:/RailsInstaller/Ruby1.9.3/bin/rake:19:in `load'
C:/RailsInstaller/Ruby1.9.3/bin/rake:19:in `<main>'
Tasks: TOP => test:units => test:prepare => db:test:prepare => db:abort_if_pending_migrations => environment

Line 5 in environment.rb is just Myapp::Application.initialize!

If I remove grizzled-rails-logger from my gemfile, I don't get the exception. I've only had this problem since upgrading to rails 3.2.6 - 3.2.5 is fine.

Syntax error in logger.rb?

Hi Brian, I've tried your gem, but end with deploying error. It seemed there are syntax error logger.rb file ?

:!ruby -c /Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:20: syntax error, unexpected ':', expecting ')'
flatten: true,
^
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:20: Can't assign to true
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:21: syntax error, unexpected ':', expecting '='
flatten_patterns: [
^
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:23: syntax error, unexpected ',', expecting kEND
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:24: syntax error, unexpected ',', expecting kEND
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:25: syntax error, unexpected ',', expecting kEND
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:26: Can't assign to true
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:27: syntax error, unexpected ':', expecting '='
colors: {
^
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:28: odd number list for Hash
debug: Term::ANSIColor.cyan,
^
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:29: syntax error, unexpected ':', expecting '='
warn: Term::ANSIColor.yellow + Term::ANSIColor.bold,
^
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:29: syntax error, unexpected ',', expecting kEND
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:30: syntax error, unexpected ',', expecting kEND
/Users/ffjia/.rvm/gems/ruby-1.8.7-p358/gems/grizzled-rails-logger-0.1.2/lib/grizzled/rails/logger.rb:32: syntax error, unexpected '}', expecting kEND

logger message argument error

Since installing grizzled-rails-logger, I'm getting an error in my unit testing when I raise an exception in a model. The trace is :

Message: <"undefined method `gsub' for #<ArgumentError: id is read only>">
---Backtrace---
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/grizzled-rails-logger-0.1.3/lib/grizzled/rails/logger.rb:112:in `do_add'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/grizzled-rails-logger-0.1.3/lib/grizzled/rails/logger.rb:89:in `add_with_grizzling'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activesupport-3.2.3/lib/active_support/buffered_logger.rb:90:in `error'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:359:in `rescue in block in rollback_transaction_records'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:356:in `block in rollback_transaction_records'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:355:in `each'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:355:in `rollback_transaction_records'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:203:in `rescue in transaction'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:180:in `transaction'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/transactions.rb:208:in `transaction'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/transactions.rb:293:in `with_transaction_returning_status'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-3.2.3/lib/active_record/transactions.rb:246:in `save!'

I think this is due to the type of the message passed to the logger being an exception rather than a string.

From http://www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html#method-i-info, it seems to be valid for activerecord to pass a non-string message (in this case an exception) to logger.error, but I think your gem assumes string messages only by using gsub.

Maybe a fix could be to do to_s before the gsub in logger.rb ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.