Forum Discussion
What are good or bad uses of irule Procs
I want to provide global debugging control over irules I have deployed so that I can target the logging of debug information for specific events, hosts, uri, vs, pool, etc, across these irules.
I plan to use a proc that will log a message to the LTM log if the current set of debug targets are met. The targets will be set as static variables.
This proc will be called multiple times in a variety of irules I have written to log debug information.
I am concerned that using a Proc will introduce a performance issue.
Please advise
Hi Larry,
the execution of TCL procs does indeed introduce some overhead and personally I tend to avoid TCL procedures as much as possible.
But especially for logging purposes they add so much flexibility while reducing the overall complexity of writing code that I'm still using them... 😉
Below is the syntax I'm using for logging ...
when RULE_INIT { set debug 9 if { $debug >= 0 } then { call logger 0 "Emergency..." } if { $debug >= 1 } then { call logger 1 "Alert..." } if { $debug >= 2 } then { call logger 2 "Critical..." } if { $debug >= 3 } then { call logger 3 "Error..." } if { $debug >= 4 } then { call logger 4 "Warning..." } if { $debug >= 5 } then { call logger 5 "Notice..." } if { $debug >= 6 } then { call logger 6 "Information..." } if { $debug >= 7 } then { call logger 7 "Debug..." } if { $debug >= 8 } then { call logger 8 "Strong Debug..." } if { $debug >= 9 } then { call logger 8 "Very Strong Debug..." } } proc logger { lvl msg } { switch -exact -- $lvl { 0 { log -noname local0.emerg "$msg" } 1 { log -noname local0.alert "$msg" } 2 { log -noname local0.crit "$msg" } 3 { log -noname local0.err "$msg" } 4 { log -noname local0.warn "$msg" } 5 { log -noname local0.notice "$msg" } 6 { log -noname local0.info "$msg" } default { log -noname local0.debug "$msg" } } }
Cheers, Kai
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com