Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sonots/strftime_logger
A logger treats log rotation in strftime fashion
https://github.com/sonots/strftime_logger
Last synced: 2 months ago
JSON representation
A logger treats log rotation in strftime fashion
- Host: GitHub
- URL: https://github.com/sonots/strftime_logger
- Owner: sonots
- License: mit
- Created: 2014-07-01T15:34:50.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-04-23T04:34:38.000Z (over 9 years ago)
- Last Synced: 2024-10-31T12:59:13.167Z (3 months ago)
- Language: Ruby
- Size: 262 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# StrftimeLogger
A logger treats log rotation in strftime fashion.
## What is this for?
The ruby's built-in logger does log rotation in the basis of log size.
In contrast, `StrftimeLogger` provides a feature to rotate logs in the basis of time.This logger allows to specify the log path with `strftime` format such as:
```
logger = StrftimeLogger.new('/var/log/application.log.%Y%m%d')
```which enables to rotate logs in each specific time.
In fact, this logger does not rotate logs, but outputs to the strftime formatted path directly.
This characteristic gives a side effect that it does not require to lock files in log rotation.
## Installation
Add this line to your application's Gemfile:
gem 'strftime_logger'
And then execute:
$ bundle
## How to use
### Normal Usage
```ruby
require 'strftime_logger'
logger = StrftimeLogger.new('/var/log/application.log.%Y%m%d')
logger.info("foo\nbar")
```which outputs logs to `/var/log/application.log.YYYYMMDD` with contents like
```
20140630T00:00:00+09:00 [INFO] foo\\nbar
```where the time is in ISO8601 format, and the line feed characters `\n` in log messages
are replaced with `\\n` so that the log message will be in one line.### Change the log level
```
logger.level = StrftimeLogger::WARN
```Or, short-hand:
```
logger.log_level = 'WARN'
```### Change the Formatter
It is possible to change the logger formmater as:
```ruby
logger.formatter = SampleFormatter.new
```The interface which the costom formmatter must provide is only `#initialize(opts = {})` and `#call(sevirity, message = nil, &block)`. Following is a simple example:
```ruby
class SampleFormatter
LEVEL_TEXT = %w(DEBUG INFO WARN ERROR FATAL UNKNOWN)def initialize(opts={})
end# @param sevirity [int] log sevirity
def call(severity, message = nil, &block)
if message.nil?
if block_given?
message = yield
else
message = ""
end
end
"#{Time.now} #{LEVEL_TEXT[sevirity]} #{message}"
end
end
```## ToDo
* Support datetime_format
## ChangeLog
See [CHANGELOG.md](CHANGELOG.md) for details.
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new [Pull Request](../../pull/new/master)## Copyright
See [LICENSE.txt](LICENSE.txt) for details.