struct stream_interface si[2]; /* client and server stream interfaces */
struct {
int logwait; /* log fields waiting to be collected : LW_* */
+ int level; /* log level to force + 1 if > 0, -1 = no log */
struct timeval accept_date; /* date of the accept() in user date */
struct timeval tv_accept; /* date of the accept() in internal date (monotonic) */
struct timeval tv_request; /* date the request arrives, {0,0} if never occurs */
if (LIST_ISEMPTY(&s->fe->logsrvs))
return;
- level = LOG_INFO;
- if (err && (s->fe->options2 & PR_O2_LOGERRORS))
- level = LOG_ERR;
+ if (s->logs.level) { /* loglevel was overridden */
+ if (s->logs.level == -1) {
+ s->logs.logwait = 0; /* logs disabled */
+ return;
+ }
+ level = s->logs.level - 1;
+ }
+ else {
+ level = LOG_INFO;
+ if (err && (s->fe->options2 & PR_O2_LOGERRORS))
+ level = LOG_ERR;
+ }
tmplog = update_log_hdr();
size = tmplog - logline;
*/
s->logs.logwait = 0;
+ s->logs.level = 0;
s->do_log = NULL;
/* default error reporting function, may be changed by analysers */
msg->msg_state = HTTP_MSG_RQBEFORE;
req->analysers = 0;
s->logs.logwait = 0;
+ s->logs.level = 0;
s->rep->flags &= ~CF_EXPECT_MORE; /* speed up sending a previous response */
stream_int_retnclose(req->prod, NULL);
return 0;
s->be = s->fe;
s->logs.logwait = s->fe->to_log;
+ s->logs.level = 0;
session_del_srv_conn(s);
s->target = NULL;
/* re-init store persistence */