Skip to main content

DEFAULT_LOG_DIRECTIVES

Constant DEFAULT_LOG_DIRECTIVES 

Source
pub const DEFAULT_LOG_DIRECTIVES: &str = "info,\
    app.input=debug,\
    app.lifecycle=debug,\
    bridge.lifecycle=debug,\
    agent.env_git=debug,\
    forge_agent::env::config_watch=debug,\
    forge_server=debug,\
    agent.catalog_scan=debug,\
    forge_agent::userdata::catalog::scan=debug,\
    forge_workspace::output_tail=debug,\
    forge_workspace::idle_sweep=debug,\
    forge_workspace::work=debug,\
    forge_workspace::browser=debug,\
    forge_browser=debug,\
    forge_supervise=debug,\
    forge_workspace::mcp=debug,\
    forge_workspace::skills=debug,\
    forge_workspace::gotify=debug,\
    forge_agent::mcp=debug,\
    forge_workspace::dictate=debug,\
    forge_workspace::subagent_cards=debug,\
    forge_dictate=debug,\
    forge_connectors::slack::throttle=debug,\
    llama_cpp_2=error,\
    llama-cpp-2=error";
Expand description

Default tracing filter. info baseline keeps signal-to-noise sensible; the targets at debug are the ones we actually stare at when triaging UI/event drops (input submission, the bridge connect path). agent.env_git is there for a second reason: a git probe missing refs/remotes/origin/HEAD is real and is not forge’s problem. At debug it stays readable without raising a warning that says forge is unwell. forge_workspace::output_tail is there for the same reason: a line in a command’s output file that cannot be decoded is the watched command’s own output rather than a problem with forge. (forge_server too: its session reads are one session’s own work.)

forge_dictate and forge_workspace::dictate are there for the same reason again: a take that reaches its capture cap, a normalizer that runs out of token budget and a take whose recognition failed are one session’s own work, not forge’s health. They were demoted out of WARN for it, so they are named here to stay readable.

forge_browser carries the browser service’s own records of a viewer attaching and of a controller role being let go. Each is that session’s own work rather than forge’s health, so they are debug; the refusal of one gesture lives on forge_server (its browser_input_refused), which the directive above already keeps readable.

The two llama targets are the dictation engine’s own log bridge, which reaches tracing through the llama-cpp-2 crate under both its hyphenated target and its module path. What it reports is the model loading itself, not forge, so it is not forge’s warning to raise.

forge_workspace::mcp and forge_agent::mcp carry the two halves of one record: the surface a spawn hands its child and the surface the CLI’s boot init frame says it received. The list is fixed once the child starts, so the pair is the only way a “tool not found” is traced to the side that actually lacked the name.

forge_connectors::slack::throttle carries the sweep’s per-pass throttle detail, which was demoted to debug once the warning moved to one per episode. A workspace Slack throttles is that workspace’s own rate limit rather than forge’s health, so the repeated numbers are debug; the dedicated target keeps the module’s per-sweep chatter out of the default filter while these stay readable.

forge_workspace::idle_sweep carries the injected sweep’s delivery record, which is a debug and would otherwise land nowhere: without the directive the subsystem reports nothing at all between a failure and its recovery.