SkillAgentSearch skills...

Alogr

AlogR is a threadsafe non-blocking asynchronous configurable logger for Ruby.

Install / Use

/learn @wayneeseguin/Alogr
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

= About

AlogR enables a Ruby project to log to the filesystem using non-blocking asynchronous IO with no external dependencies.

= Author

Wayne E. Seguin (wayneeseguin at gmail dot com)

= How it works

A global logging buffer gets added to the running application. There is a global buffer which is an array of fifo queues. Worker threads are to pop the first element (which is a string) off of a fifo queue and "process" it. Processing involves writing the string to disk using non-blocking asynchronous IO Threads will be event based where the event is something being placed in the queue, or the queue non-empty.

= Config

You can choose the log that the application uses:

AlogR.new( "log/app_log.log" )

:log specifies the default log

AlogR.new( :log => "log/app_log.log" )

You may also specify any combination of logs corresponding to the log levels in addition to the default log:

AlogR.new( :log => "log/app_log.log", :error => "log/error.log", :debug => "log/debug.log")

where log levels are one of: [ emergency, alert, critical, error, warning, notice, info, debug ]

= Application Usage

First be sure to setup the logger:

$alogger = AlogR.new(:log)

To log a string to either the error log or the default log (depending on your configuration):

"Jonnie! You borked it!".log(:error)

Feature Requests:

Be able to specify conditional filters

= Examples

  • Example 1 require "alogr" $logger = AlogR::Logger.new(:log => "/Users/wayne/projects/ruby/alogr/trunk/log/default.log") "a test, should go to the logs 10 times\n".log.log.log.log.log.log.log.log.log.log

  • Example 2 require "alogr" $logger = AlogR.new( :log => "/Users/wayne/projects/ruby/alogr/trunk/log/production.log", :error => "/Users/wayne/projects/ruby/alogr/trunk/log/error.log" )

"(1)this should go to the production log\n".log

"(2)this should go to error log\n".log(:error)

"(3)error\n".log :error

"(4)production\n".log :info

"(5)error".log :error

  • Example 3 require "lib/alogr" $logger = AlogR.new( :log => "/Users/wayne/projects/ruby/alogr/trunk/log/production.log", :error => "/Users/wayne/projects/ruby/alogr/trunk/log/error.log", :info => "/Users/wayne/projects/ruby/alogr/trunk/log/info.log", :warning => "/Users/wayne/projects/ruby/alogr/trunk/log/warning.log" )

"this should go to info log".log

"this should go to error log".log(:error)

"this should go to production log".log(:warning)

"error".log :error

"warning".log :warning

"info".log :info

"yetanother error".log :error

  • Example 4 require "lib/alogr" $logger = AlogR.new( :log => "/Users/wayne/projects/ruby/alogr/trunk/log/production.log", :error => "/Users/wayne/projects/ruby/alogr/trunk/log/error.log", :info => "/Users/wayne/projects/ruby/alogr/trunk/log/info.log", /paypal => "/Users/wayne/projects/ruby/alogr/trunk/log/paypal.log" ) "this should go to info log".log "this should go to error log".log(:error) "this should go to production log".log(:warning)

  • Example 4: If line matches a regexp then sent log/paypal.log as well as production.log AlogR.new(:log => "log/production.log", /paypal/ => "log/paypal.log")

Gets logged to both { :something => "value", :something_else => "value" }.log

View on GitHub
GitHub Stars17
CategoryDevelopment
Updated7mo ago
Forks12

Languages

Ruby

Security Score

67/100

Audited on Sep 2, 2025

No findings