Roxen.git
/
server
/
etc
/
include
/
request_trace.h
version
»
Context lines:
10
20
40
80
file
none
3
Roxen.git/server/etc/include/request_trace.h:1:
// -*- pike -*- // // Some stuff to do logging of a request through the server. //
-
// $Id: request_trace.h,v 1.
11
2002/10/25
14
:
49
:
40
mast Exp $
+
// $Id: request_trace.h,v 1.
12
2002/10/25
17
:
46
:
18
mast Exp $
#ifndef REQUEST_TRACE_H #define REQUEST_TRACE_H #include <roxen.h> #include <module.h>
-
//
Messages
to
TRACE_ENTER
and
TRACE_LEAVE are preferably a single
-
//
line, and they should not end with period and/or newline.
+
//
Note
that
TRACE_ENTER
(but
not
TRACE_LEAVE
)
takes html encoded
+
// message strings. Messages
are preferably a single line, and they
+
//
should not end with period and/or newline.
#ifdef REQUEST_TRACE # define TRACE_ENTER(A,B) Roxen->trace_enter (id, (A), (B)) # define TRACE_LEAVE(A) Roxen->trace_leave (id, (A)) #else # define TRACE_ENTER(A,B) do{ \ function(string,mixed ...:void) _trace_enter; \
Roxen.git/server/etc/include/request_trace.h:34:
if(id && \ (_trace_leave = \ [function(string:void)]([mapping(string:mixed)]id->misc)-> \ trace_leave)) \ _trace_leave(A); \ }while(0) #endif // SIMPLE_TRACE_ENTER and SIMPLE_TRACE_LEAVE are simpler variants of
-
// the above macros
since
they
handle sprintf style format lists
.
Note
-
// the reversed argument order in SIMPLE_TRACE_ENTER compared to
-
//
TRACE_ENTER.
+
// the above macros
:
They
handle sprintf style format lists
and don't
+
//
take html encoded messages. Note
the reversed argument order in
+
//
SIMPLE_TRACE_ENTER compared to TRACE_ENTER.
#define SIMPLE_TRACE_ENTER(OBJ, MSG...) do { \ array _msg_arr_; \
-
TRACE_ENTER ((_msg_arr_ = ({MSG}),
\
+
TRACE_ENTER (
Roxen.html_encode_string
(
\
+
(
_msg_arr_ = ({MSG}), \
sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \
-
(sizeof (_msg_arr_) ? _msg_arr_[0] : "")),
\
+
(sizeof (_msg_arr_) ? _msg_arr_[0] : ""))
)
, \
(OBJ)); \ } while (0) #define SIMPLE_TRACE_LEAVE(MSG...) do { \ array _msg_arr_; \ TRACE_LEAVE ((_msg_arr_ = ({MSG}), \ sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \ (sizeof (_msg_arr_) ? _msg_arr_[0] : ""))); \ } while (0) // The following variant should be used inside RXML.Frame callbacks // such as do_enter. In addition to the request trace, it does rxml // debug logging which is activated with the DEBUG define in // combination with the magic _debug_ tag argument or the RXML_VERBOSE // or RXML_REQUEST_VERBOSE defines.
-
+
//
+
// These two macros do not take html encoded messages, as opposed to
+
// TRACE_ENTER and TRACE_LEAVE.
#define TAG_TRACE_ENTER(MSG...) do { \ array _msg_arr_; \ string _msg_; \
-
TRACE_ENTER ("tag
<
" + (tag && tag->name) + "
>
" + \
-
(_msg_arr_ = ({MSG}),
\
+
TRACE_ENTER ("tag
<
" + (tag && tag->name) + "
>
" +
\
+
Roxen.html_encode_string (
\
+
(_msg_arr_ = ({MSG}), \
_msg_ = sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \
-
(sizeof (_msg_arr_) ? _msg_arr_[0] : "")),
\
+
(sizeof (_msg_arr_) ? _msg_arr_[0] : ""))
)
, \
tag); \ DO_IF_DEBUG ( \ if (TAG_DEBUG_TEST (flags & RXML.FLAG_DEBUG)) \ tag_debug ("%O: %s\n", this_object(), \ _msg_ || \ (_msg_arr_ = ({MSG}), \ sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \ (sizeof (_msg_arr_) ? _msg_arr_[0] : ""))); \
-
);
\
+
);
\
} while (0) #define TAG_TRACE_LEAVE(MSG...) do { \ array _msg_arr_; \ string _msg_; \ TRACE_LEAVE ((_msg_arr_ = ({MSG}), \ _msg_ = sizeof (_msg_arr_) > 1 ? sprintf (@_msg_arr_) : \ (sizeof (_msg_arr_) ? _msg_arr_[0] : ""))); \ DO_IF_DEBUG ( \ if (TAG_DEBUG_TEST (flags & RXML.FLAG_DEBUG)) { \