libpslog is a high-performance, zero-dependency structured logger for C. It is the C port of the Go pkt.systems/pslog logger and aims to preserve the same overall product shape: console and JSON output, strong structured logging support, careful control over allocations, aggressive benchmarking, and output semantics that are close to the Go implementation. The Go variant is already one of the fastest loggers in that ecosystem; libpslog brings the same performance-first design to C while exposing a C-shaped API.

On this site you find the release packages for various architectures and ecosystems. Tarballs suffixed with -dev contains the .a static library while packages without that suffix contain the .so shared (runtime) library.
#include "pslog.h"
pslog_config config;
pslog_logger *log;
pslog_field fields[2];
pslog_default_config(&config);
config.mode = PSLOG_MODE_JSON;
config.output = pslog_output_from_fp(stdout, 0);
log = pslog_new(&config);
fields[0] = pslog_str("service", "api");
fields[1] = pslog_i64("attempt", 3L);
log->info(log, "request handled", fields, 2u);
log->warnf(log, "warning", "failure=%b service=%s", 1, "api");
log->destroy(log);
Source code (MIT) found at https://github.com/sa6mwa/libpslog.