systemd-journal logging interface wrapper for ruby (donated to theforeman, kept as a mirror)
Go to file
Lukas Zapletal e23338bbb0 Version 1.0.12 2020-05-25 09:18:12 +02:00
ext/journald_native Update URL in gemspec and travis 2018-10-15 09:53:23 +02:00
lib/journald Version 1.0.12 2020-05-25 09:18:12 +02:00
spec Update tests to long function names 2018-09-14 08:51:40 +03:00
.gitignore New style Gemfile 2018-03-30 02:38:02 +03:00
.travis.yml adjust to new travis 2020-05-25 09:11:39 +02:00 Version 1.0.12 2020-05-25 09:18:12 +02:00 change license to LGPL, release as 1.0.9 2016-04-11 17:16:34 +03:00 Update URL in gemspec and travis 2018-10-15 09:53:23 +02:00
Rakefile separating native lib and logger - rename gem to journald-native 2014-10-30 23:42:16 +03:00
gems.rb Update gemspec: remove non needed files 2018-04-04 03:11:06 +03:00
journald-native.gemspec adjust to new travis 2020-05-25 09:11:39 +02:00


Build Status

A systemd-journal native logging lib wrapper. See sd-journal help for more info



gem install journald-native

or add

gem 'journald-native', '~> 1.0.11'

to your Gemfile.

Please note that you need a systemd development package installed in your system like systemd-devel in Fedora, libsystemd-dev in Debian, also may be a separate package for journal in older systems like libsystemd-journal-dev.

NB: The gem can be installed on non-linux system but it will do nothing there. (Functions will return success without any actual effect)


require 'journald/native'


Constants are used to denote a log level

Available constants:

Journald::LOG_EMERG     # system is unusable
Journald::LOG_ALERT     # action must be taken immediately
Journald::LOG_CRIT      # critical conditions
Journald::LOG_ERR       # error conditions
Journald::LOG_WARNING   # warning conditions
Journald::LOG_NOTICE    # normal but significant condition
Journald::LOG_INFO      # informational
Journald::LOG_DEBUG     # debug-level messages

systemd-journal uses syslog constants to denote level therefore they are equal to those of the Syslog module, e.g. Journald::LOG_WARNING == Syslog::LOG_WARNING. See syslog man page for more info


Methods of Journald::Native class wrap systemd-journal calls. See sd-journal help for more info

Journald::Native.sd_journal_send "MESSAGE=message", "PRIORITY=#{Journald::LOG_WARNING}"
Journald::Native.sd_journal_print Journald::LOG_WARNING, "message"
Journald::Native.sd_journal_perror "message"

It is not recommended to use sd_journal_print and sd_journal_perror as you may get exception if your string contains '\0' byte due to C zero-terminated string format. On the contrary sd_journal_send uses binary buffers and does not have this shortcoming.

Short aliases

Versions prior to 1.0.11 used short function names that are available now as aliases. They will probably throw a deprecation warning in 1.1 and be removed in 2.0 should these versions ever happen.

Journald::Native.sd_journal_send can be called as Journald::Native.send
Journald::Native.sd_journal_print can be called as Journald::Native.print
Journald::Native.sd_journal_perror can be called as Journald::Native.perror

Please note that send method is overridden. This is a bad practice and a reason why longer names were introduced later


This library was written by Anton Smirnov and currently maintained by developers.


Copyright (c) 2014 Anton Smirnov

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You can find a copy of the GNU Lesser General Public License in or at