Sample code for 30+ languages & platforms
Zig

Enter/Leave Context in Logging

Demonstrates EnterContext and LeaveContext using the Chilkat Log API.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    const log = try chilkat.Log.init();
    defer log.deinit();

    // Initialize the log object with an initial context tag:
    log.clear("myLog");

    // Add some information..
    log.logInfo("Hello, I'm here...");

    // Open a sub-context
    log.enterContext("abc");

    // New information is now logged within the "abc" context.
    log.logInfo("This is inside the abc context");
    log.logError("File not found.");

    // Perhaps open a new context...
    log.enterContext("fileInfo");
    log.logData("filename", "something.txt");
    log.logData("path", "/somedir/xyz");
    log.leaveContext();

    // Close the "abc" context.
    log.leaveContext();

    // Examine the content of the log:
    std.debug.print("{s}\n", .{try log.getLastErrorText(alloc)});

    // This is the output:

    // myLog:
    //   Hello, I'm here...
    //   abc:
    //     This is inside the abc context
    //     File not found.
    //     fileInfo:
    //       filename: something.txt
    //       path: /somedir/xyz
    //     --fileInfo
    //   --abc
    // --myLog
}