TSDebug
Traffic Server Debugging APIs.
Synopsis
#include <ts/ts.h>
void TSError
(const char * format, …)
void TSFatal
(const char * format, …)
void TSEmergency
(const char * format, …)
void TSDebug
(const char * tag, const char * format, …)
int TSIsDebugTagSet
(const char * tag)
void TSDebugSpecific
(int debug_flag, const char * tag, const char * format, …)
void TSHttpTxnDebugSet
(TSHttpTxn txnp, int on)
void TSHttpSsnDebugSet
(TSHttpSsn ssn, int on)
int TSHttpTxnDebugGet
(TSHttpTxn txnp)
int TSHttpSsnDebugGet
(TSHttpSsn ssn)
const char* TSHttpServerStateNameLookup
(TSServerState state)
const char* TSHttpHookNameLookup
(TSHttpHookID hook)
const char* TSHttpEventNameLookup
(TSEvent event)
void TSAssert
(…)
void TSReleaseAssert
(…)
Description
TSError()
is similar to printf
except that instead of writing the output to the C standard output, it writes output to the Traffic Server error log.
TSFatal()
is used to shutdown Traffic Server in hopes that a clean restart will be able to fix the problem. It will also log a message to the Traffic Server error log just like TSError()
.
TSEmergency()
is used to shutdown Traffic Server when restarting isn’t sufficient to fix the problem, e.g. missing or corrupted files. It will also log a message to the Traffic Server error log just like TSError()
.
Note
Both TSFatal()
and TSEmergency()
can be called within TSPluginInit()
, such that Traffic Server can be shutdown promptly when the plugin fails to initialize properly.
TSDebug()
is the same as TSError()
except that it only logs the debug message if the given debug tag is enabled. It writes output to the Traffic Server debug log.
TSIsDebugTagSet()
returns non-zero if the given debug tag is enabled.
In debug mode, TSAssert
Traffic Server to prints the file name, line number and expression, and then aborts. In release mode, the expression is not removed but the effects of printing an error message and aborting are. TSReleaseAssert
prints an error message and aborts in both release and debug mode.
TSDebugSpecific()
emits a debug line even if the debug tag is turned off, as long as debug flag is enabled. This can be used in conjunction with TSHttpTxnDebugSet()
, TSHttpSsnDebugSet()
, TSHttpTxnDebugGet()
and TSHttpSsnDebugGet()
to enable debugging on specific session and transaction objects.
TSHttpServerStateNameLookup()
, TSHttpHookNameLookup()
and TSHttpEventNameLookup()
converts the respective internal state to a string representation. This can be useful in debugging (TSDebug()
), logging and other types notifications.
Examples
This example uses TSDebugSpecific()
to log a message when a specific debugging flag is enabled:
#include <ts/ts.h>
// Produce information about a hook receiving an event
TSDebug(PLUGIN_NAME, "Entering hook=%s, event=%s",
TSHttpHookNameLookup(hook), TSHttpEventNameLookup(event));
// Emit debug message if "tag" is enabled or the txn debug
// flag is set.
TSDebugSpecifc(TSHttpTxnDebugGet(txn), "tag" ,
"Hello World from transaction %p", txn);
See Also
TSAPI(3ts), printf(3)