Technologic
A clean and terse way to produce standardized, highly actionable, and data-rich logs
Installation
Add this line to your application's Gemfile:
gem "technologic"
And then execute:
$ bundle
Or install it yourself as:
$ gem install technologic
Usage
Simply write the error class, the message as a symbol, and then as a hash anything else you want to see in the logs.
error :ERROR_MESSAGE_HERE, HASH_KEY: INFO_TO_PASS, HASH_KEY2: INFO_TO_PASS,
All error classes are available: debug
info
warn
error
fatal
Some examples for each:
debug :something_is_not_perfect_here, info_wanted: the_info
info :some_logged_info_i_may_look_at, info_wanted: the_info
warn :its_weird_and_you_wanna_know, info_wanted: the_info
error :email_for_user_does_not_exist, user_id: @user.email
fatal :it_is_going_to_be_a_long_day, need_to_know: info_dump
If given a block, these methods will include the runtime duration of the given block after the code is evaluated:
info :something_happening_in_here, extra_data: "I really need this data" do
sleep 0.5
puts "Important things happening here!"
end
# Results in:
Important things happening here!
{"extra_data":"I really need this data","event":"something_happening_in_here.Object","duration":503.745,"@timestamp":"2020-07-27T20:05:06.355-04:00","@version":"1","severity":"INFO","host":"localhost"}
Configuration
TODO: Improve me
log_duration_in_ms
- Boolean; default: false
By default, Technologic will log duration as a float in seconds. To log duration as milliseconds instead, set it in your application config:
# Rails app - in application.rb
Rails.application.configure do |config|
...
technologic.log_duration_in_ms = true
end
# For a plain ol' Ruby app with no Railties:
Technologic::ConfigOptions.log_duration_in_ms = true
NOTE: In a future version of Technologic, the default will change from false
to true
Development
Consult Spicerack's development instructions for more info.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/RubyAfterAll/spicerack.
License
The gem is available as open source under the terms of the MIT License.