Skip to content

Callbacks

This example demonstrates how to use callbacks to monitor log events. Callbacks are useful for triggering external alerts, metrics, or custom logic whenever a log message is processed.

Code Example

zig
const std = @import("std");
const logly = @import("logly");

fn logCallback(record: *const logly.Record) !void {
    if (record.level.priority() >= logly.Level.err.priority()) {
        std.debug.print("[ALERT] High severity log detected: {s}\n", .{record.message});
    }
}

pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();
    const allocator = gpa.allocator();

    // Enable colors on Windows
    _ = logly.Terminal.enableAnsiColors();

    const logger = try logly.Logger.init(allocator);
    defer logger.deinit();

    // Set log callback for monitoring
    logger.setLogCallback(&logCallback);

    try logger.info("Normal operation", @src());
    try logger.warn("Warning message", @src());  // Using short alias
    try logger.err("Error occurred - callback will trigger", @src());
    try logger.crit("Critical error - callback will trigger", @src());  // Using short alias

    std.debug.print("\nCallbacks example completed!\n", .{});
}

Expected Output

text
[INFO] Normal operation
[WARNING] Warning message
[ERROR] Error occurred - callback will trigger
[ALERT] High severity log detected: Error occurred - callback will trigger
[CRITICAL] Critical error - callback will trigger
[ALERT] High severity log detected: Critical error - callback will trigger

Released under the MIT License.