mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-22 15:05:51 +00:00
[MEDIUM] tried to clean the logs up a little bit
The logs have become a real mess. It is now very hard to tell which frontend/backend will impose its configuration for the logs. This needs a complete rework but at least it should work.
This commit is contained in:
parent
f1221aa19f
commit
ddb358d932
@ -167,7 +167,11 @@ int event_accept(int fd) {
|
|||||||
s->srv_fd = -1;
|
s->srv_fd = -1;
|
||||||
s->srv = NULL;
|
s->srv = NULL;
|
||||||
s->pend_pos = NULL;
|
s->pend_pos = NULL;
|
||||||
s->conn_retries = p->conn_retries;
|
s->conn_retries = p->beprm->conn_retries;
|
||||||
|
|
||||||
|
/* FIXME: the logs are horribly complicated now, because they are
|
||||||
|
* defined in <p>, <p->beprm>, and later <be> and <be->beprm>.
|
||||||
|
*/
|
||||||
|
|
||||||
if (s->flags & SN_MONITOR)
|
if (s->flags & SN_MONITOR)
|
||||||
s->logs.logwait = 0;
|
s->logs.logwait = 0;
|
||||||
|
56
src/log.c
56
src/log.c
@ -287,12 +287,10 @@ void send_log(struct proxy *p, int level, const char *message, ...)
|
|||||||
void sess_log(struct session *s)
|
void sess_log(struct session *s)
|
||||||
{
|
{
|
||||||
char pn[INET6_ADDRSTRLEN + strlen(":65535")];
|
char pn[INET6_ADDRSTRLEN + strlen(":65535")];
|
||||||
#if 1 /* FIXME: this should disappear */
|
|
||||||
struct proxy *p = s->fe;
|
|
||||||
#endif
|
|
||||||
struct proxy *fe = s->fe;
|
struct proxy *fe = s->fe;
|
||||||
struct proxy *be = s->be->beprm;
|
struct proxy *be = s->be;
|
||||||
int log;
|
struct proxy *prx_log;
|
||||||
|
int log, tolog;
|
||||||
char *uri;
|
char *uri;
|
||||||
char *pxid;
|
char *pxid;
|
||||||
char *srv;
|
char *srv;
|
||||||
@ -304,7 +302,9 @@ void sess_log(struct session *s)
|
|||||||
* computed.
|
* computed.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
log = fe->to_log & ~s->logs.logwait;
|
tolog = (fe->to_log | be->to_log | be->beprm->to_log); /* union of all logs */
|
||||||
|
|
||||||
|
log = tolog & ~s->logs.logwait;
|
||||||
|
|
||||||
if (s->cli_addr.ss_family == AF_INET)
|
if (s->cli_addr.ss_family == AF_INET)
|
||||||
inet_ntop(AF_INET,
|
inet_ntop(AF_INET,
|
||||||
@ -316,21 +316,31 @@ void sess_log(struct session *s)
|
|||||||
pn, sizeof(pn));
|
pn, sizeof(pn));
|
||||||
|
|
||||||
uri = (log & LW_REQ) ? s->logs.uri ? s->logs.uri : "<BADREQ>" : "";
|
uri = (log & LW_REQ) ? s->logs.uri ? s->logs.uri : "<BADREQ>" : "";
|
||||||
pxid = be->id;
|
pxid = be->beprm->id;
|
||||||
srv = (be->to_log & LW_SVID) ?
|
srv = (tolog & LW_SVID) ?
|
||||||
(s->data_source != DATA_SRC_STATS) ?
|
(s->data_source != DATA_SRC_STATS) ?
|
||||||
(s->srv != NULL) ? s->srv->id : "<NOSRV>" : "<STATS>" : "-";
|
(s->srv != NULL) ? s->srv->id : "<NOSRV>" : "<STATS>" : "-";
|
||||||
|
|
||||||
tm = localtime((time_t *)&s->logs.tv_accept.tv_sec);
|
tm = localtime((time_t *)&s->logs.tv_accept.tv_sec);
|
||||||
if (p->to_log & LW_REQ) {
|
|
||||||
|
if (fe->logfac1 >= 0)
|
||||||
|
prx_log = fe;
|
||||||
|
else if (be->logfac1 >= 0)
|
||||||
|
prx_log = be;
|
||||||
|
else
|
||||||
|
prx_log = NULL; /* global */
|
||||||
|
|
||||||
|
if (tolog & LW_REQ) {
|
||||||
char tmpline[MAX_SYSLOG_LEN], *h;
|
char tmpline[MAX_SYSLOG_LEN], *h;
|
||||||
int hdr;
|
int hdr;
|
||||||
|
|
||||||
h = tmpline;
|
h = tmpline;
|
||||||
if (p->to_log & LW_REQHDR && (h < tmpline + sizeof(tmpline) - 10)) {
|
|
||||||
|
/* right now, header capture is limited to the frontend only */
|
||||||
|
if (fe->to_log & LW_REQHDR && (h < tmpline + sizeof(tmpline) - 10)) {
|
||||||
*(h++) = ' ';
|
*(h++) = ' ';
|
||||||
*(h++) = '{';
|
*(h++) = '{';
|
||||||
for (hdr = 0; hdr < p->nb_req_cap; hdr++) {
|
for (hdr = 0; hdr < fe->nb_req_cap; hdr++) {
|
||||||
if (hdr)
|
if (hdr)
|
||||||
*(h++) = '|';
|
*(h++) = '|';
|
||||||
if (s->hreq.cap[hdr] != NULL)
|
if (s->hreq.cap[hdr] != NULL)
|
||||||
@ -340,10 +350,10 @@ void sess_log(struct session *s)
|
|||||||
*(h++) = '}';
|
*(h++) = '}';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p->to_log & LW_RSPHDR && (h < tmpline + sizeof(tmpline) - 7)) {
|
if (fe->to_log & LW_RSPHDR && (h < tmpline + sizeof(tmpline) - 7)) {
|
||||||
*(h++) = ' ';
|
*(h++) = ' ';
|
||||||
*(h++) = '{';
|
*(h++) = '{';
|
||||||
for (hdr = 0; hdr < p->nb_rsp_cap; hdr++) {
|
for (hdr = 0; hdr < fe->nb_rsp_cap; hdr++) {
|
||||||
if (hdr)
|
if (hdr)
|
||||||
*(h++) = '|';
|
*(h++) = '|';
|
||||||
if (s->rsp_cap[hdr] != NULL)
|
if (s->rsp_cap[hdr] != NULL)
|
||||||
@ -362,7 +372,7 @@ void sess_log(struct session *s)
|
|||||||
}
|
}
|
||||||
*h = '\0';
|
*h = '\0';
|
||||||
|
|
||||||
send_log(p, LOG_INFO,
|
send_log(prx_log, LOG_INFO,
|
||||||
"%s:%d [%02d/%s/%04d:%02d:%02d:%02d]"
|
"%s:%d [%02d/%s/%04d:%02d:%02d:%02d]"
|
||||||
" %s %s %d/%d/%d/%d/%s%d %d %s%lld"
|
" %s %s %d/%d/%d/%d/%s%d %d %s%lld"
|
||||||
" %s %s %c%c%c%c %d/%d/%d %d/%d%s\n",
|
" %s %s %c%c%c%c %d/%d/%d %d/%d%s\n",
|
||||||
@ -377,20 +387,20 @@ void sess_log(struct session *s)
|
|||||||
(s->logs.t_queue >= 0) ? s->logs.t_queue - s->logs.t_request : -1,
|
(s->logs.t_queue >= 0) ? s->logs.t_queue - s->logs.t_request : -1,
|
||||||
(s->logs.t_connect >= 0) ? s->logs.t_connect - s->logs.t_queue : -1,
|
(s->logs.t_connect >= 0) ? s->logs.t_connect - s->logs.t_queue : -1,
|
||||||
(s->logs.t_data >= 0) ? s->logs.t_data - s->logs.t_connect : -1,
|
(s->logs.t_data >= 0) ? s->logs.t_data - s->logs.t_connect : -1,
|
||||||
(p->to_log & LW_BYTES) ? "" : "+", s->logs.t_close,
|
(be->to_log & LW_BYTES) ? "" : "+", s->logs.t_close,
|
||||||
s->logs.status,
|
s->logs.status,
|
||||||
(p->to_log & LW_BYTES) ? "" : "+", s->logs.bytes,
|
(tolog & LW_BYTES) ? "" : "+", s->logs.bytes,
|
||||||
s->logs.cli_cookie ? s->logs.cli_cookie : "-",
|
s->logs.cli_cookie ? s->logs.cli_cookie : "-",
|
||||||
s->logs.srv_cookie ? s->logs.srv_cookie : "-",
|
s->logs.srv_cookie ? s->logs.srv_cookie : "-",
|
||||||
sess_term_cond[(s->flags & SN_ERR_MASK) >> SN_ERR_SHIFT],
|
sess_term_cond[(s->flags & SN_ERR_MASK) >> SN_ERR_SHIFT],
|
||||||
sess_fin_state[(s->flags & SN_FINST_MASK) >> SN_FINST_SHIFT],
|
sess_fin_state[(s->flags & SN_FINST_MASK) >> SN_FINST_SHIFT],
|
||||||
(p->options & PR_O_COOK_ANY) ? sess_cookie[(s->flags & SN_CK_MASK) >> SN_CK_SHIFT] : '-',
|
(be->beprm->options & PR_O_COOK_ANY) ? sess_cookie[(s->flags & SN_CK_MASK) >> SN_CK_SHIFT] : '-',
|
||||||
(p->options & PR_O_COOK_ANY) ? sess_set_cookie[(s->flags & SN_SCK_MASK) >> SN_SCK_SHIFT] : '-',
|
(be->beprm->options & PR_O_COOK_ANY) ? sess_set_cookie[(s->flags & SN_SCK_MASK) >> SN_SCK_SHIFT] : '-',
|
||||||
s->srv ? s->srv->cur_sess : 0, p->beconn, actconn,
|
s->srv ? s->srv->cur_sess : 0, be->beprm->beconn, actconn,
|
||||||
s->logs.srv_queue_size, s->logs.prx_queue_size, tmpline);
|
s->logs.srv_queue_size, s->logs.prx_queue_size, tmpline);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
send_log(p, LOG_INFO, "%s:%d [%02d/%s/%04d:%02d:%02d:%02d]"
|
send_log(prx_log, LOG_INFO, "%s:%d [%02d/%s/%04d:%02d:%02d:%02d]"
|
||||||
" %s %s %d/%d/%s%d %s%lld"
|
" %s %s %d/%d/%s%d %s%lld"
|
||||||
" %c%c %d/%d/%d %d/%d\n",
|
" %c%c %d/%d/%d %d/%d\n",
|
||||||
pn,
|
pn,
|
||||||
@ -402,11 +412,11 @@ void sess_log(struct session *s)
|
|||||||
pxid, srv,
|
pxid, srv,
|
||||||
(s->logs.t_queue >= 0) ? s->logs.t_queue : -1,
|
(s->logs.t_queue >= 0) ? s->logs.t_queue : -1,
|
||||||
(s->logs.t_connect >= 0) ? s->logs.t_connect - s->logs.t_queue : -1,
|
(s->logs.t_connect >= 0) ? s->logs.t_connect - s->logs.t_queue : -1,
|
||||||
(p->to_log & LW_BYTES) ? "" : "+", s->logs.t_close,
|
(tolog & LW_BYTES) ? "" : "+", s->logs.t_close,
|
||||||
(p->to_log & LW_BYTES) ? "" : "+", s->logs.bytes,
|
(tolog & LW_BYTES) ? "" : "+", s->logs.bytes,
|
||||||
sess_term_cond[(s->flags & SN_ERR_MASK) >> SN_ERR_SHIFT],
|
sess_term_cond[(s->flags & SN_ERR_MASK) >> SN_ERR_SHIFT],
|
||||||
sess_fin_state[(s->flags & SN_FINST_MASK) >> SN_FINST_SHIFT],
|
sess_fin_state[(s->flags & SN_FINST_MASK) >> SN_FINST_SHIFT],
|
||||||
s->srv ? s->srv->cur_sess : 0, p->beconn, actconn,
|
s->srv ? s->srv->cur_sess : 0, be->beprm->beconn, actconn,
|
||||||
s->logs.srv_queue_size, s->logs.prx_queue_size);
|
s->logs.srv_queue_size, s->logs.prx_queue_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user