#systemd-unit #dbus #unit #systemd

app killjoy-notifier-logfile

Log unit state changes on behalf of killjoy

3 unstable releases

0.2.0 Nov 3, 2019
0.1.1 Sep 4, 2019
0.1.0 Sep 2, 2019

#10 in #systemd-unit

Download history 20/week @ 2024-02-26 12/week @ 2024-03-11 54/week @ 2024-04-01

66 downloads per month

GPL-3.0-or-later

21KB
234 lines

killjoy Notifier: Logfile

Log unit state changes on behalf of killjoy.

killjoy is a systemd unit monitoring application. It discovers systemd units and tracks their states. When a unit changes to a state of interest, killjoy contacts notifiers. This application is a notifier which, upon being contacted by killjoy, will write to a CSV log file on its behalf.

Concepts

First, read the concepts section in the killjoy documentation.

This application is short-lived, so as to reduce RAM usage. When properly installed, this application will be auto-started whenever a D-Bus message is sent to it. When started, this application will consume all messages (presumably from killjoy) in its message queue, and then idle. If no messages arrive for more than a few seconds, this application quits.

Installation

Arch Linux users may use the killjoy-notifier-logfile-git AUR package. A stable package will be created when this application further matures.

Rust developers may install this app from source. Note that libdbus must be installed. (On Ubuntu, this is provided by the libdbus-1-dev package.)

git clone https://github.com/Ichimonji10/killjoy-notifier-logfile.git
cd killjoy-notifier-logfile
scripts/install.sh

Configuration

No configuration is necessary or possible.

Usage

Define a notifier in killjoy's configuration file:

"logfile": {
    "bus_type": "session",
    "bus_name": "name.jerebear.KilljoyNotifierLogfile1"
}

Then, list it in a rule's list of notifiers.

When this application receives a message, it will write to $XDG_DATA_HOME/killjoy-notifier-logfile/log.csv, ($XDG_DATA_HOME is most commonly ~/.local/share) with three or more columns, where the final columns list the states that the unit has entered from newest to oldest. For example, the following lines might be logged if syncthing.service restarts:

2019-08-24T14:32:35.272529-04:00,syncthing.service,deactivating,active
2019-08-24T14:32:35.697160-04:00,syncthing.service,inactive,deactivating
2019-08-24T14:32:35.700217-04:00,syncthing.service,active,inactive

The timestamps are in RFC 3339 format.

Changelog

See annotated git tags.

License

This application is licensed under the GPLv3 or any later version.

Dependencies

~8MB
~154K SLoC