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: falseBy 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 = trueNOTE: In a future version of Technologic, the default will change from
falsetotrue
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.