[systemd-devel] order of sd_journal_query_unique()?

Daurnimator quae at daurnimator.com
Mon Mar 9 14:02:52 PDT 2015


On 6 March 2015 at 14:38, Daurnimator <quae at daurnimator.com> wrote:
> sd_journal_query_unique() finds unique *field names*.
> Not journal entries.

Apologies, I described this incorrectly.

sd_journal_query_unique() takes a field name, and allows you to
iterate over all different values that field has taken.

To accomplish a wildcard or pattern matched search, you can iterate
through unique fields, adding all that meet your pattern as matches.

Here is an example lua program that will print (in reverse) matches
for the given field and (lua) pattern:

#!/usr/bin/env lua
--[[
Depends on lua-systemd: https://github.com/daurnimator/lua-systemd
]]

local sj = require "systemd.journal"

local field = assert(arg[1], "need to provide field name")
local patt = assert(arg[2], "need to provide a pattern")

local j = assert(sj.open())

assert(j:seek_tail())
assert(j:flush_matches())
local has_at_least_one = false
for value in j:each_unique(field) do
    if value:match(patt) then
        has_at_least_one = true
        assert(j:add_match(field.."="..value))
    end
end
if not has_at_least_one then
    io.stderr:write("no matches found\n")
    os.exit(1)
end
assert(j:add_disjunction())
while j:previous() do
    print(j:get("_SYSTEMD_UNIT"), j:get("MESSAGE"))
end


More information about the systemd-devel mailing list