---
name: "Linux::Systemd::Journal::Write"
section: "3pm"
platform: "linux"
package: "liblinux-systemd-perl"
version: "1.201600-4+b4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Linux::Systemd::Journal::Write"
---

# Linux::Systemd::Journal::Write(3pm)

XS wrapper around sd-journal

## NAME

Linux::Systemd::Journal::Write - XS wrapper around sd-journal

## VERSION

version 1.201600

## SYNOPSIS

```
  use Linux::Systemd::Journal::Write;
  my $jnl = Linux::Systemd::Journal::Write->new;
  # basic log messages
  $jnl->print('flarg');          # with default log level
  $jnl->print('Hello world', 4); # WARN level
  # add abitrary data to the log entry
  my %hash = (DAY_ONE => 'Monday', DAY_TWO => 'Tuesday', DAY_THREE => 'Wednesday');
  $jnl->send('Here is a message', \%hash); # add abitrary data to the log entry
  # will log "Failed to open file: No such file or directory" and ERRNO=2
  open my $fh, '<', 'nosuchfile'
    or $jnl->perror('Failed to open file');
```

## DESCRIPTION

### Log Levels

The log levels use by `"journald"` and by "priority" are the same as those use by `"syslog"`, so instead of using numeric priorities you can

```
  use Sys::Syslog ':macros';
```

giving you access to the `"LOG_*"` "level constants"

## ATTRIBUTES

### "app\_id"

Will be used to set `"SYSLOG_IDENTIFIER"`. Defaults to `basename($0)`;

### "priority"

Default log priority. See "Log Levels"

### "caller\_details"

Boolean controlling whether to log the `"CODE_FILE"`, `"CODE_LINE"`, and `"CODE_FUNC"` of the caller.

Optional. Defaults to `"true"`;

See also [**systemd.journal-fields**(7)](/systemd.journal-fields/7.md)

### "caller\_level"

If this module is not being used directly, but through some proxy module for instance, `"caller_level"` is used to determine the number of frames to look back through.

Optional. Defaults to `0`;

## METHODS

### "print($msg, $pri?)"

`$msg` should be either a string. `$pri` is optional, and defaults to `$self`-\>priority

### "send($msg\_or\_data, $data?)"

If there is one arg, it may be a simple string to log. Or, it could be a hashref\
  or an arrayref. In this case, one of the keys sent MUST be 'message'.

If there are two args, the first must be the string to use as a message, the second a hashref or arrayref. In this case, a key called message should not be set.

Finally, `"send"` can also be called with an array of key =\> values, one of which must be message.

Keys will be uppercased.

### perror($msg)

Logs the string of the current set `"errno"`, prefixed with `$msg`.

## SEE ALSO

- •

  Log::Journald

  At some point between me writing this module and getting around to releasing it, another module was released to write the journal.

- •

  systemd \<http://www.freedesktop.org/wiki/Software/systemd/\>

  The main `"systemd"` page.

- •

  [**sd-journal**(3)](/sd-journal/3.md)

  Man page of the C API

## AUTHOR

Ioan Rogers \<ioanr@cpan.org\>

## COPYRIGHT AND LICENSE

This software is Copyright (c) 2020 by Ioan Rogers.

This is free software, licensed under:

```
  The GNU Lesser General Public License, Version 2.1, February 1999
```
