https://github.com/scarfacedeb/semantic_logger_journald
Plugin for semantic_logger gem providing systemd-journal appender
https://github.com/scarfacedeb/semantic_logger_journald
journald logging semantic-logging systemd
Last synced: about 1 year ago
JSON representation
Plugin for semantic_logger gem providing systemd-journal appender
- Host: GitHub
- URL: https://github.com/scarfacedeb/semantic_logger_journald
- Owner: scarfacedeb
- License: mit
- Created: 2020-07-31T13:54:28.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2020-07-31T15:10:21.000Z (almost 6 years ago)
- Last Synced: 2025-03-12T14:50:18.792Z (over 1 year ago)
- Topics: journald, logging, semantic-logging, systemd
- Language: Ruby
- Homepage:
- Size: 10.7 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# SemanticLoggerJournald
Plugin for [semantic_logger](https://github.com/rocketjob/semantic_logger) that adds appender to send logs into journald.
It uses [journald-logger](https://github.com/theforeman/journald-logger) under the hood.
## Installation
```ruby
gem "semantic_logger_journald", "~> 0.1"
```
## Usage
To add journald appender to semantic_logger:
```ruby
require "semantic_logger_journald"
journald_appender = SemanticLoggerJournald::Appender.new(syslog_id: "my_service")
SemanticLogger.add_appender(appender: journald_appender)
logger = SemanticLogger[MyClass]
logger.info "Signed In", user_id: 1
```
You can also directly pass a journald-logger instance:
```ruby
jlogger = Journald::Logger.new("my_service")
journald_appender = SemanticLoggerJournald::Appender.new(logger: jlogger)
SemanticLogger.add_appender(appender: journald_appender)
```
## Formatter
By default, `SemanticLoggerJournald::Formatter` flattens the payload keys to convert them into individual fields:
```ruby
logger.info "Paid", order: { id: 1, status: "new" }
```
It'll produce the following journald fields:
```
MESSAGE=Paid
ORDER__ID=1
ORDER__STATUS=new
```
If you'd rather keep the payload intact, pass a custom formatter:
```ruby
formatter = SemanticLoggerJournald::Formatter.new(flatten_payload: false)
journald_appender = SemanticLoggerJournald::Appender.new(
syslog_id: "my_service",
formatter: formatter
)
SemanticLogger.add_appender(appender: journald_appender)
logger.info "Paid", order: { id: 1, status: "new" }
```
It'll produce the following journald fields:
```
MESSAGE=Paid
ORDER={ id: 1, status: "new" }
```
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/scarfacedeb/semantic_logger_journald.
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).