Semantic Logger alternatives and similar gems
Based on the "Logging" category.
Alternatively, view Semantic Logger alternatives based on common mentions on social networks and blogs.
-
Logging
A flexible logging library for use in Ruby programs based on the design of Java's log4j library. -
Log4r
Log4r is a comprehensive and flexible logging library for use in Ruby programs. It features a heirarchical logging system of any number of levels, custom level names, multiple output destinations per log event, custom formatting, and more. -
Puts Debuggerer
Ruby library for improved puts debugging, automatically displaying bonus useful information such as source line number and source code.
SaaSHub - Software Alternatives and Reviews
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Semantic Logger or a related project?
README
Semantic Logger
Semantic Logger is a feature rich logging framework, and replacement for existing Ruby & Rails loggers.
Documentation
Logging Destinations
Logging to the following destinations are all supported "out-of-the-box":
- File
- Screen
- ElasticSearch. (Use with Kibana for Dashboards and Visualizations)
- Graylog
- BugSnag
- NewRelic
- Splunk
- MongoDB
- Honeybadger
- Sentry (both with legacy
sentry-raven
and modernsentry-ruby
gem) - HTTP
- TCP
- UDP
- Syslog
- Add any existing Ruby logger as another destination.
- Roll-your-own
Semantic Logger is capable of logging thousands of lines per second without slowing down the application. Traditional logging systems make the application wait while the log information is being saved. Semantic Logger avoids this slowdown by pushing log events to an in-memory queue that is serviced by a separate thread that only handles saving log information to multiple destinations / appenders.
Rails
When running Rails, use rails_semantic_logger instead of Semantic Logger directly since it will automatically replace the Rails default logger with Semantic Logger.
Rocket Job
Checkout the sister project Rocket Job: Ruby's missing batch system.
Fully supports Semantic Logger when running jobs in the background. Complete support for job metrics sent via Semantic Logger to your favorite dashboards.
Optional Dependencies
The following gems are only required when their corresponding appenders are being used, and are therefore not automatically included by this gem:
- Bugsnag Appender: gem 'bugsnag'
- MongoDB Appender: gem 'mongo' 1.9.2 or above
- NewRelic Appender: gem 'newrelic_rpm'
- Syslog Appender: gem 'syslog_protocol' 0.9.2 or above
- Syslog Appender to a remote syslogng server over TCP or UDP: gem 'net_tcp_client'
- Splunk Appender: gem 'splunk-sdk-ruby'
- Elasticsearch Appender: gem 'elasticsearch'
- Kafka Appender: gem 'ruby-kafka'
- Legacy Sentry Appender: gem 'sentry-raven' (deprecated)
- Sentry Appender: gem 'sentry-ruby'
Upgrading to Semantic Logger v4.9
These changes should not be noticeable by the majority of users of Semantic Logger, since they are to the internal API. It is possible that advanced users may be using these internal API's directly.
This does not affect any calls to the public api SemanticLogger.add_appender
.
File and IO are now separate appenders. When creating the File appender explicitly, its arguments have changed. For example, when requesting an IO stream, it needs to be changed from:
SemanticLogger::Appender::File.new(io: $stderr)
to:
SemanticLogger::Appender::IO.new($stderr)
Additionally, this needs to be changed from:
SemanticLogger::Appender::File.new(file_name: "file.log")
to:
SemanticLogger::Appender::File.new("file.log")
Rails Semantic Logger, if used, needs to be upgraded to v4.9 when upgrading to Semantic Logger v4.9.
Upgrading to Semantic Logger v4.4
With some forking frameworks it is necessary to call reopen
after the fork. With v4.4 the
workaround for Ruby 2.5 crashes is no longer needed.
I.e. Please remove the following line if being called anywhere:
SemanticLogger::Processor.instance.instance_variable_set(:@queue, Queue.new)
Upgrading to Semantic Logger v4.0
The following changes need to be made when upgrading to V4:
- Ruby V2.3 / JRuby V9.1 is now the minimum runtime version.
- Replace calls to Logger#with_payload with SemanticLogger.named_tagged.
- Replace calls to Logger#payload with SemanticLogger.named_tags.
- MongoDB Appender requires Mongo Ruby Client V2 or greater.
- Appenders now write payload data in a seperate :payload tag instead of mixing them directly into the root elements to avoid name clashes.
As a result any calls like the following:
logger.debug foo: 'foo', bar: 'bar'
Must be replaced with the following in v4:
logger.debug payload: {foo: 'foo', bar: 'bar'}
Similarly, for measure blocks:
logger.measure_info('How long is the sleep', foo: 'foo', bar: 'bar') { sleep 1 }
Must be replaced with the following in v4:
logger.measure_info('How long is the sleep', payload: {foo: 'foo', bar: 'bar'}) { sleep 1 }
The common log call has not changed, and the payload is still logged directly:
logger.debug('log this', foo: 'foo', bar: 'bar')
Install
gem install semantic_logger
To configure a stand-alone application for Semantic Logger:
require 'semantic_logger'
# Set the global default log level
SemanticLogger.default_level = :trace
# Log to a file, and use the colorized formatter
SemanticLogger.add_appender(file_name: 'development.log', formatter: :color)
If running rails, see: Semantic Logger Rails
Author
Versioning
This project uses Semantic Versioning.
*Note that all licence references and agreements mentioned in the Semantic Logger README section above
are relevant to that project's source code only.