---
name: "cap_syslog"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/cap_closelog"
---

# cap\_syslog(3)

library for syslog in capability mode

Part of [cap\_closelog(3)](/cap_closelog/3.md).

## NAME

**cap\_syslog**, **cap\_vsyslog**, **cap\_openlog**, **cap\_closelog**, **cap\_setlogmask** – library for syslog in capability mode

## LIBRARY

library “libcap\_syslog”

## SYNOPSIS

**#include \<libcasper.h\>**

**#include \<casper/cap\_syslog.h\>**

*void*\

**cap\_syslog**(*cap\_channel\_t \*chan*, *int pri*, *const char \*fmt*, *...*);

*void*\

**cap\_vsyslog**(*cap\_channel\_t \*chan*, *int priority*, *const char \*fmt*, *va\_list ap*);

*void*\

**cap\_openlog**(*cap\_channel\_t \*chan*, *const char \*ident*, *int logopt*, *int facility*);

*void*\

**cap\_closelog**(*cap\_channel\_t \*chan*);

*int*\

**cap\_setlogmask**(*cap\_channel\_t \*chan*, *int maskpri*);

## DESCRIPTION

The functions **cap\_syslog**() **cap\_vsyslog**() **cap\_openlog**() **cap\_closelog**() **cap\_setlogmask**() are respectively equivalent to [syslog(3)](/syslog/3.md), [vsyslog(3)](/vsyslog/3.md), [openlog(3)](/openlog/3.md), [closelog(3)](/closelog/3.md), [setlogmask(3)](/setlogmask/3.md) except that the connection to the **system.syslog** service needs to be provided.

All of these functions are reentrant but not thread-safe. That is, they may be called from separate threads only with different *cap\_channel\_t* arguments or with synchronization.

## EXAMPLES

The following example first opens a capability to casper and then uses this capability to create the **system.syslog** casper service to log messages.

```
cap_channel_t *capcas, *capsyslog;
/* Open capability to Casper. */
capcas = cap_init();
if (capcas == NULL)
	err(1, "Unable to contact Casper");
/* Enter capability mode sandbox. */
if (cap_enter() < 0 && errno != ENOSYS)
	err(1, "Unable to enter capability mode");
/* Use Casper capability to create capability to the system.syslog service. */
capsyslog = cap_service_open(capcas, "system.syslog");
if (capsyslog == NULL)
	err(1, "Unable to open system.syslog service");
/* Close Casper capability, we don't need it anymore. */
cap_close(capcas);
/* Let's log something. */
cap_syslog(capsyslog, LOG_NOTICE, "System logs from capability mode.");
```

## SEE ALSO

[cap\_enter(2)](/cap_enter/2.md), [closelog(3)](/closelog/3.md), [err(3)](/err/3.md), [openlog(3)](/openlog/3.md), [setlogmask(3)](/setlogmask/3.md), [syslog(3)](/syslog/3.md), [vsyslog(3)](/vsyslog/3.md), [capsicum(4)](/capsicum/4.md), [nv(9)](/nv/9.md)

## HISTORY

The **cap\_syslog** service first appeared in FreeBSD 10.3.

## AUTHORS

Mariusz Zaborski ⟨*oshogbo@FreeBSD.org*⟩
