# Analogger
## Overview
Analogger is a fast asynchronous logging service and client library. It is implemented in Ruby, and currently uses EventMachine in the server, though there is a plan on the roadmap to enable it to run with a pure Ruby event reactor.
Analogger was originally written over a decade ago, in response to a need to maintain a central logging server to accumulate logs from numerous web applications to a single location. It takes very little time to send a logging message, making it a very low impact logger for performance sensitive applications. It has been continuously used in production since then, albeit in a version not released publicly.
## Usage
Analogger is configured through a YAML formatted file:
“‘yaml host: mycompany-logger-1-nyc1.private port: 6766 default_log: /var/log/analogger_default daemonize: true syncinterval: 5 logs:
-
service:
-
default
logfile: /var/log/analogger/default cull: true
-
-
service:
-
project-development
logfile: /var/log/analogger/project-development.log
-
-
service:
-
project-production
logfile: /var/log/analogger/project-production.log cull: true
-
“‘
### Configuration Variables
-
port
The port to listen for connections on. 6766 is the default.
-
host
The hostname or IP to bind to when listening for connections.
-
default_log: /var/log/analogger_default
This is the file to send logs to which don’t appear to match any named service in the configuration.
-
daemonize
Whether or not to detach an analogger process as a daemon process. You normally want this to be true.
-
syncinterval
Analogger will run a thread every X seconds to ensure that any currently buffered log contents are synchronized to disk. Analogger tries to write any buffered logs before it exits if it receives a signal which would cause the process to die. However, in the event that this is not possible, only the logs received since the last sync interval would be at risk.
-
logs
This is a list of defined logging services. Each consists of a service label, a logging destination (the path to the log file for that service), and optionally a ‘cull` attribute which, if true, causes analogger to deduplicate logs, eliminating consecutive repeats of the same message and instead emitting a summary of how many records like the one above the summary were culled.