Blog

Tip of the Week: WireBox Debug Output

Brad Wood February 06, 2013

Spread the word

Brad Wood

February 06, 2013

Spread the word


Share your thoughts

 

If you've used WireBox for autowiring the CFCs in your application, you may have reached a point where you were having trouble figuring out what was going on behind the scenes.  This can be especially true if you've added auutowire metdata to a CFC, but the dependencies still aren't getting injected.
 
WireBox actually has pretty robust debug-level logging built in via LogBox that will tell you everything it is doing, but the question might be, "How do I see it?"  Wirebox's debug logging is kind of like the light in your fridge-- it's only on when you're looking at it.  
 
First, you need to have at least one LogBox appender enabled.  Depending on which application template you used, you may alread have a ColdboxTracerAppender appender configured which shows up when debug mode is on.  My favorite appender to set up an AsyncRollingFileAppender and then watch the text file with a tail program.
 
logBox = {
    appenders = {
        myAsycFile = {
            class="coldbox.system.logging.appenders.AsyncRollingFileAppender",
            properties={
                filePath=expandPath("/common/logs"),autoExpand=false
            }
        }
    }
};
 
Now, even if you already have an appender configured, you're probably not seeing any debug logs from WireBox; or any part of the ColdBox framework for that matter.  This is a good default, since ColdBox can be a bit chatty in debug mode.  The reason you're not seeing anything is because the "coldbox.system" category is turned off.  Remember that loggers in LogBox are named after the CFC they're in, and inherit logging settings in a hierarchical manner.  Look for a line of code similar to this in your config:
 
info = ["coldbox.system"]
 
This sets a maximum log level of "info" for anything logged inside of "coldbox.system".  Since all of WireBox's logs are debug level, they don't make the cut and get ignored.  To tell wirebox to start logging debug-level messages from WireBox, you can add the following line in the LogBox config:
 
debug = ["coldbox.system.ioc"]
 
After a quick reinit, LogBox will start logging debug messages from within coldbox.system.ioc (which is WireBox) to whatever appenders you have configured.  Don't forget to turn debug logs back off when you are done for performance reasons.  
 
 
P.S. You can also use environment overrides so debug messages are logged on your development machine, but not on higher environments. 

Add Your Comment

Recent Entries

Introducing BoxLang AI: Build Intelligent Applications with One Unified AI Platform

Introducing BoxLang AI: Build Intelligent Applications with One Unified AI Platform

Artificial intelligence is opening new possibilities for web applications, but building those experiences can become complicated quickly. Each AI provider brings its own SDK, authentication process, APIs, and model-specific requirements. Add agents, memory, tools, structured responses, or document retrieval, and development teams can find themselves managing integrations instead of improving their applications.

Introduced at Into the Box 2026, BoxLang AI gives developers a more unified way to build AI-powered applications within the BoxLang ecosystem.

Maria Jose Herrera
Maria Jose Herrera
August 06, 2026
bx-toml : Native TOML Support for BoxLang

bx-toml : Native TOML Support for BoxLang

TOML has quietly become the configuration format of the modern toolchain. Rust ships Cargo.toml, Python ships pyproject.toml, and a growing pile of CLIs, deployment platforms, and infrastructure tools expect it. If your BoxLang application needs to read one of those files, or generate one, you now have first class support for it.

Luis Majano
Luis Majano
August 04, 2026
BoxLang 1.16.0 Released!

BoxLang 1.16.0 Released!

BoxLang 1.16.0 is here, closing 50 issues across new features, improvements, and bug fixes. The theme running through this release is control: control over how HTTP clients are created and reused, control over what happens when a request fails, control over how much data a response is allowed to buffer, control over when Java classpaths reload, and tighter alignment with CFML behavior in the edge cases that only show up in production.

Luis Majano
Luis Majano
August 04, 2026