Skip to content

Commit 67448f2

Browse files
committed
more tools
1 parent 53cebaf commit 67448f2

4 files changed

Lines changed: 672 additions & 280 deletions

File tree

models/tools/LogBoxTools.bx

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
/**
2+
* MCP Tools for LogBox logging framework introspection.
3+
*/
4+
class {
5+
6+
/**
7+
* Get LogBox general info: version, ID, registered logger names, and registered appender names.
8+
*/
9+
@AITool
10+
@mcpTool
11+
function get_logbox_info() {
12+
var logBox = application.cbController.getLogBox()
13+
return {
14+
"version" : logBox.getVersion(),
15+
"logBoxID" : logBox.getLogBoxID(),
16+
"loggers" : logBox.getCurrentLoggers().listToArray().sort( "textnocase" ),
17+
"appenders" : logBox.getCurrentAppenders().listToArray().sort( "textnocase" )
18+
}
19+
}
20+
21+
/**
22+
* Get all registered loggers with their category, min/max log levels, and registered appender names.
23+
*/
24+
@AITool
25+
@mcpTool
26+
function get_loggers() {
27+
var logBox = application.cbController.getLogBox()
28+
var registry = logBox.getLoggerRegistry()
29+
var result = []
30+
31+
registry.each( ( category, logger ) => {
32+
var appenderNames = logger.hasAppenders()
33+
? logger.getAppenders().keyArray().sort( "textnocase" )
34+
: []
35+
36+
result.append( {
37+
"category" : arguments.category,
38+
"levelMin" : logger.getLevelMin(),
39+
"levelMax" : logger.getLevelMax(),
40+
"canDebug" : logger.canDebug(),
41+
"canInfo" : logger.canInfo(),
42+
"canWarn" : logger.canWarn(),
43+
"canError" : logger.canError(),
44+
"canFatal" : logger.canFatal(),
45+
"appenders" : appenderNames
46+
} )
47+
} )
48+
49+
return result
50+
}
51+
52+
/**
53+
* Get details for a specific registered logger by category name.
54+
*
55+
* @category The logger category name (e.g. "ROOT" or a dotted class path)
56+
*/
57+
@AITool
58+
@mcpTool
59+
function get_logger( required string category ) {
60+
var logBox = application.cbController.getLogBox()
61+
var registry = logBox.getLoggerRegistry()
62+
63+
if ( !registry.keyExists( arguments.category ) ) {
64+
return "No logger found with category: #arguments.category#"
65+
}
66+
67+
var logger = registry[ arguments.category ]
68+
var appenderNames = logger.hasAppenders()
69+
? logger.getAppenders().keyArray().sort( "textnocase" )
70+
: []
71+
72+
return {
73+
"category" : arguments.category,
74+
"levelMin" : logger.getLevelMin(),
75+
"levelMax" : logger.getLevelMax(),
76+
"canDebug" : logger.canDebug(),
77+
"canInfo" : logger.canInfo(),
78+
"canWarn" : logger.canWarn(),
79+
"canError" : logger.canError(),
80+
"canFatal" : logger.canFatal(),
81+
"appenders" : appenderNames
82+
}
83+
}
84+
85+
/**
86+
* Get all registered appenders with their name, class, min/max log levels, and initialization status.
87+
*/
88+
@AITool
89+
@mcpTool
90+
function get_appenders() {
91+
var logBox = application.cbController.getLogBox()
92+
var registry = logBox.getAppenderRegistry()
93+
var result = []
94+
95+
registry.each( ( name, appender ) => {
96+
result.append( {
97+
"name" : arguments.name,
98+
"class" : getMetadata( arguments.appender ).name,
99+
"levelMin" : arguments.appender.getLevelMin(),
100+
"levelMax" : arguments.appender.getLevelMax(),
101+
"initialized" : arguments.appender.isInitialized()
102+
} )
103+
} )
104+
105+
return result
106+
}
107+
108+
/**
109+
* Get the root logger details.
110+
*/
111+
@AITool
112+
@mcpTool
113+
function get_root_logger() {
114+
var logger = application.cbController.getLogBox().getRootLogger()
115+
var appenderNames = logger.hasAppenders()
116+
? logger.getAppenders().keyArray().sort( "textnocase" )
117+
: []
118+
119+
return {
120+
"category" : "ROOT",
121+
"levelMin" : logger.getLevelMin(),
122+
"levelMax" : logger.getLevelMax(),
123+
"canDebug" : logger.canDebug(),
124+
"canInfo" : logger.canInfo(),
125+
"canWarn" : logger.canWarn(),
126+
"canError" : logger.canError(),
127+
"canFatal" : logger.canFatal(),
128+
"appenders" : appenderNames
129+
}
130+
}
131+
132+
}

0 commit comments

Comments
 (0)