mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 14:21:25 +02:00
MINOR: log: log-format: usable without httplog and tcplog
Options httplog and tcplog aren't mandatory anymore for the log-format. The LW_ flags are now set during the log-format string parsing.
This commit is contained in:
parent
a73203e3dc
commit
5e19a2866f
@ -117,18 +117,18 @@ struct logformat_node {
|
|||||||
|
|
||||||
|
|
||||||
/* fields that need to be logged. They appear as flags in session->logs.logwait */
|
/* fields that need to be logged. They appear as flags in session->logs.logwait */
|
||||||
#define LW_DATE 1 /* date */
|
#define LW_INIT 1 /* date */
|
||||||
#define LW_CLIP 2 /* CLient IP */
|
#define LW_CLIP 2 /* CLient IP */
|
||||||
#define LW_SVIP 4 /* SerVer IP */
|
#define LW_SVIP 4 /* SerVer IP */
|
||||||
#define LW_SVID 8 /* server ID */
|
#define LW_SVID 8 /* server ID */
|
||||||
#define LW_REQ 16 /* http REQuest */
|
#define LW_REQ 16 /* http REQuest */
|
||||||
#define LW_RESP 32 /* http RESPonse */
|
#define LW_RESP 32 /* http RESPonse */
|
||||||
#define LW_PXIP 64 /* proxy IP */
|
|
||||||
#define LW_PXID 128 /* proxy ID */
|
|
||||||
#define LW_BYTES 256 /* bytes read from server */
|
#define LW_BYTES 256 /* bytes read from server */
|
||||||
#define LW_COOKIE 512 /* captured cookie */
|
#define LW_COOKIE 512 /* captured cookie */
|
||||||
#define LW_REQHDR 1024 /* request header(s) */
|
#define LW_REQHDR 1024 /* request header(s) */
|
||||||
#define LW_RSPHDR 2048 /* response header(s) */
|
#define LW_RSPHDR 2048 /* response header(s) */
|
||||||
|
#define LW_BCKIP 4096 /* backend IP */
|
||||||
|
#define LW_FRTIP 8192 /* frontend IP */
|
||||||
|
|
||||||
struct logsrv {
|
struct logsrv {
|
||||||
struct list list;
|
struct list list;
|
||||||
|
@ -3351,8 +3351,6 @@ stats_error_parsing:
|
|||||||
if (!strcmp(args[1], "httplog")) {
|
if (!strcmp(args[1], "httplog")) {
|
||||||
char *logformat;
|
char *logformat;
|
||||||
/* generate a complete HTTP log */
|
/* generate a complete HTTP log */
|
||||||
curproxy->options2 &= ~PR_O2_CLFLOG;
|
|
||||||
curproxy->to_log |= LW_DATE | LW_CLIP | LW_SVID | LW_REQ | LW_PXID | LW_RESP | LW_BYTES;
|
|
||||||
logformat = default_http_log_format;
|
logformat = default_http_log_format;
|
||||||
if (*(args[2]) != '\0') {
|
if (*(args[2]) != '\0') {
|
||||||
if (!strcmp(args[2], "clf")) {
|
if (!strcmp(args[2], "clf")) {
|
||||||
@ -3369,7 +3367,6 @@ stats_error_parsing:
|
|||||||
else if (!strcmp(args[1], "tcplog")) {
|
else if (!strcmp(args[1], "tcplog")) {
|
||||||
char *logformat;
|
char *logformat;
|
||||||
/* generate a detailed TCP log */
|
/* generate a detailed TCP log */
|
||||||
curproxy->to_log |= LW_DATE | LW_CLIP | LW_SVID | LW_PXID | LW_BYTES;
|
|
||||||
logformat = default_tcp_log_format;
|
logformat = default_tcp_log_format;
|
||||||
parse_logformat_string(logformat, curproxy, &curproxy->logformat, curproxy->mode);
|
parse_logformat_string(logformat, curproxy, &curproxy->logformat, curproxy->mode);
|
||||||
}
|
}
|
||||||
|
92
src/log.c
92
src/log.c
@ -58,6 +58,7 @@ struct logformat_type {
|
|||||||
char *name;
|
char *name;
|
||||||
int type;
|
int type;
|
||||||
int mode;
|
int mode;
|
||||||
|
int lw; /* logwait bitsfield */
|
||||||
int (*config_callback)(struct logformat_node *node, struct proxy *curproxy);
|
int (*config_callback)(struct logformat_node *node, struct proxy *curproxy);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -65,50 +66,50 @@ int prepare_addrsource(struct logformat_node *node, struct proxy *curproxy);
|
|||||||
|
|
||||||
/* log_format variable names */
|
/* log_format variable names */
|
||||||
static const struct logformat_type logformat_keywords[] = {
|
static const struct logformat_type logformat_keywords[] = {
|
||||||
{ "o", LOG_FMT_GLOBAL, PR_MODE_TCP, NULL }, /* global option */
|
{ "o", LOG_FMT_GLOBAL, PR_MODE_TCP, 0, NULL }, /* global option */
|
||||||
{ "Ci", LOG_FMT_CLIENTIP, PR_MODE_TCP, NULL }, /* client ip */
|
{ "Ci", LOG_FMT_CLIENTIP, PR_MODE_TCP, LW_CLIP, NULL }, /* client ip */
|
||||||
{ "Cp", LOG_FMT_CLIENTPORT, PR_MODE_TCP, NULL }, /* client port */
|
{ "Cp", LOG_FMT_CLIENTPORT, PR_MODE_TCP, LW_CLIP, NULL }, /* client port */
|
||||||
{ "Bp", LOG_FMT_BACKENDPORT, PR_MODE_TCP, prepare_addrsource }, /* backend source port */
|
{ "Bp", LOG_FMT_BACKENDPORT, PR_MODE_TCP, LW_BCKIP, prepare_addrsource }, /* backend source port */
|
||||||
{ "Bi", LOG_FMT_BACKENDIP, PR_MODE_TCP, prepare_addrsource }, /* backend source ip */
|
{ "Bi", LOG_FMT_BACKENDIP, PR_MODE_TCP, LW_BCKIP, prepare_addrsource }, /* backend source ip */
|
||||||
{ "Fp", LOG_FMT_FRONTENDPORT, PR_MODE_TCP, NULL }, /* frontend port */
|
{ "Fp", LOG_FMT_FRONTENDPORT, PR_MODE_TCP, LW_FRTIP, NULL }, /* frontend port */
|
||||||
{ "Fi", LOG_FMT_FRONTENDIP, PR_MODE_TCP, NULL }, /* frontend ip */
|
{ "Fi", LOG_FMT_FRONTENDIP, PR_MODE_TCP, LW_FRTIP, NULL }, /* frontend ip */
|
||||||
{ "Sp", LOG_FMT_SERVERPORT, PR_MODE_TCP, NULL }, /* server destination port */
|
{ "Sp", LOG_FMT_SERVERPORT, PR_MODE_TCP, LW_SVIP, NULL }, /* server destination port */
|
||||||
{ "Si", LOG_FMT_SERVERIP, PR_MODE_TCP, NULL }, /* server destination ip */
|
{ "Si", LOG_FMT_SERVERIP, PR_MODE_TCP, LW_SVIP, NULL }, /* server destination ip */
|
||||||
{ "t", LOG_FMT_DATE, PR_MODE_TCP, NULL }, /* date */
|
{ "t", LOG_FMT_DATE, PR_MODE_TCP, LW_INIT, NULL }, /* date */
|
||||||
{ "T", LOG_FMT_DATEGMT, PR_MODE_TCP, NULL }, /* date GMT */
|
{ "T", LOG_FMT_DATEGMT, PR_MODE_TCP, LW_INIT, NULL }, /* date GMT */
|
||||||
{ "Ts", LOG_FMT_TS, PR_MODE_TCP, NULL }, /* timestamp GMT */
|
{ "Ts", LOG_FMT_TS, PR_MODE_TCP, LW_INIT, NULL }, /* timestamp GMT */
|
||||||
{ "ms", LOG_FMT_MS, PR_MODE_TCP, NULL }, /* accept date millisecond */
|
{ "ms", LOG_FMT_MS, PR_MODE_TCP, LW_INIT, NULL }, /* accept date millisecond */
|
||||||
{ "f", LOG_FMT_FRONTEND, PR_MODE_TCP, NULL }, /* frontend */
|
{ "f", LOG_FMT_FRONTEND, PR_MODE_TCP, LW_INIT, NULL }, /* frontend */
|
||||||
{ "b", LOG_FMT_BACKEND, PR_MODE_TCP, NULL }, /* backend */
|
{ "b", LOG_FMT_BACKEND, PR_MODE_TCP, LW_INIT, NULL }, /* backend */
|
||||||
{ "s", LOG_FMT_SERVER, PR_MODE_TCP, NULL }, /* server */
|
{ "s", LOG_FMT_SERVER, PR_MODE_TCP, LW_SVID, NULL }, /* server */
|
||||||
{ "B", LOG_FMT_BYTES, PR_MODE_TCP, NULL }, /* bytes read */
|
{ "B", LOG_FMT_BYTES, PR_MODE_TCP, LW_BYTES, NULL }, /* bytes read */
|
||||||
{ "Tq", LOG_FMT_TQ, PR_MODE_HTTP, NULL }, /* Tq */
|
{ "Tq", LOG_FMT_TQ, PR_MODE_HTTP, LW_BYTES, NULL }, /* Tq */
|
||||||
{ "Tw", LOG_FMT_TW, PR_MODE_TCP, NULL }, /* Tw */
|
{ "Tw", LOG_FMT_TW, PR_MODE_TCP, LW_BYTES, NULL }, /* Tw */
|
||||||
{ "Tc", LOG_FMT_TC, PR_MODE_TCP, NULL }, /* Tc */
|
{ "Tc", LOG_FMT_TC, PR_MODE_TCP, LW_BYTES, NULL }, /* Tc */
|
||||||
{ "Tr", LOG_FMT_TR, PR_MODE_HTTP, NULL }, /* Tr */
|
{ "Tr", LOG_FMT_TR, PR_MODE_HTTP, LW_BYTES, NULL }, /* Tr */
|
||||||
{ "Tt", LOG_FMT_TT, PR_MODE_TCP, NULL }, /* Tt */
|
{ "Tt", LOG_FMT_TT, PR_MODE_TCP, LW_BYTES, NULL }, /* Tt */
|
||||||
{ "st", LOG_FMT_STATUS, PR_MODE_HTTP, NULL }, /* status code */
|
{ "st", LOG_FMT_STATUS, PR_MODE_HTTP, LW_RESP, NULL }, /* status code */
|
||||||
{ "cc", LOG_FMT_CCLIENT, PR_MODE_HTTP, NULL }, /* client cookie */
|
{ "cc", LOG_FMT_CCLIENT, PR_MODE_HTTP, LW_REQHDR, NULL }, /* client cookie */
|
||||||
{ "cs", LOG_FMT_CSERVER, PR_MODE_HTTP, NULL }, /* server cookie */
|
{ "cs", LOG_FMT_CSERVER, PR_MODE_HTTP, LW_RSPHDR, NULL }, /* server cookie */
|
||||||
{ "ts", LOG_FMT_TERMSTATE, PR_MODE_TCP, NULL },/* terminaison state */
|
{ "ts", LOG_FMT_TERMSTATE, PR_MODE_TCP, LW_BYTES, NULL },/* termination state */
|
||||||
{ "tsc", LOG_FMT_TERMSTATE_CK, PR_MODE_TCP, NULL },/* terminaison state */
|
{ "tsc", LOG_FMT_TERMSTATE_CK, PR_MODE_TCP, LW_INIT, NULL },/* termination state */
|
||||||
{ "ac", LOG_FMT_ACTCONN, PR_MODE_TCP, NULL }, /* actconn */
|
{ "ac", LOG_FMT_ACTCONN, PR_MODE_TCP, LW_BYTES, NULL }, /* actconn */
|
||||||
{ "fc", LOG_FMT_FECONN, PR_MODE_TCP, NULL }, /* feconn */
|
{ "fc", LOG_FMT_FECONN, PR_MODE_TCP, LW_BYTES, NULL }, /* feconn */
|
||||||
{ "bc", LOG_FMT_BECONN, PR_MODE_TCP, NULL }, /* beconn */
|
{ "bc", LOG_FMT_BECONN, PR_MODE_TCP, LW_BYTES, NULL }, /* beconn */
|
||||||
{ "sc", LOG_FMT_SRVCONN, PR_MODE_TCP, NULL }, /* srv_conn */
|
{ "sc", LOG_FMT_SRVCONN, PR_MODE_TCP, LW_BYTES, NULL }, /* srv_conn */
|
||||||
{ "rc", LOG_FMT_RETRIES, PR_MODE_TCP, NULL }, /* retries */
|
{ "rc", LOG_FMT_RETRIES, PR_MODE_TCP, LW_BYTES, NULL }, /* retries */
|
||||||
{ "sq", LOG_FMT_SRVQUEUE, PR_MODE_TCP, NULL }, /* srv_queue */
|
{ "sq", LOG_FMT_SRVQUEUE, PR_MODE_TCP, LW_BYTES, NULL }, /* srv_queue */
|
||||||
{ "bq", LOG_FMT_BCKQUEUE, PR_MODE_TCP, NULL }, /* backend_queue */
|
{ "bq", LOG_FMT_BCKQUEUE, PR_MODE_TCP, LW_BYTES, NULL }, /* backend_queue */
|
||||||
{ "hr", LOG_FMT_HDRREQUEST, PR_MODE_HTTP, NULL }, /* header request */
|
{ "hr", LOG_FMT_HDRREQUEST, PR_MODE_HTTP, LW_REQHDR, NULL }, /* header request */
|
||||||
{ "hs", LOG_FMT_HDRRESPONS, PR_MODE_HTTP, NULL }, /* header response */
|
{ "hs", LOG_FMT_HDRRESPONS, PR_MODE_HTTP, LW_RSPHDR, NULL }, /* header response */
|
||||||
{ "hrl", LOG_FMT_HDRREQUESTLIST, PR_MODE_HTTP, NULL }, /* header request list */
|
{ "hrl", LOG_FMT_HDRREQUESTLIST, PR_MODE_HTTP, LW_REQHDR, NULL }, /* header request list */
|
||||||
{ "hsl", LOG_FMT_HDRRESPONSLIST, PR_MODE_HTTP, NULL }, /* header response list */
|
{ "hsl", LOG_FMT_HDRRESPONSLIST, PR_MODE_HTTP, LW_RSPHDR, NULL }, /* header response list */
|
||||||
{ "r", LOG_FMT_REQ, PR_MODE_HTTP, NULL }, /* request */
|
{ "r", LOG_FMT_REQ, PR_MODE_HTTP, LW_REQ, NULL }, /* request */
|
||||||
{ "pid", LOG_FMT_PID, PR_MODE_TCP, NULL }, /* log pid */
|
{ "pid", LOG_FMT_PID, PR_MODE_TCP, LW_INIT, NULL }, /* log pid */
|
||||||
{ "rt", LOG_FMT_COUNTER, PR_MODE_TCP, NULL }, /* log counter */
|
{ "rt", LOG_FMT_COUNTER, PR_MODE_HTTP, LW_REQ, NULL }, /* HTTP request counter */
|
||||||
{ "H", LOG_FMT_HOSTNAME, PR_MODE_TCP, NULL }, /* Hostname */
|
{ "H", LOG_FMT_HOSTNAME, PR_MODE_TCP, LW_INIT, NULL }, /* Hostname */
|
||||||
{ "ID", LOG_FMT_UNIQUEID, PR_MODE_HTTP, NULL }, /* Unique ID */
|
{ "ID", LOG_FMT_UNIQUEID, PR_MODE_HTTP, LW_BYTES, NULL }, /* Unique ID */
|
||||||
{ 0, 0, 0, NULL }
|
{ 0, 0, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
char default_http_log_format[] = "%Ci:%Cp [%t] %f %b/%s %Tq/%Tw/%Tc/%Tr/%Tt %st %B %cc %cs %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r"; // default format
|
char default_http_log_format[] = "%Ci:%Cp [%t] %f %b/%s %Tq/%Tw/%Tc/%Tr/%Tt %st %B %cc %cs %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r"; // default format
|
||||||
@ -238,6 +239,7 @@ int parse_logformat_var(char *str, size_t len, struct proxy *curproxy, struct li
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
curproxy->to_log |= logformat_keywords[j].lw;
|
||||||
LIST_ADDQ(list_format, &node->list);
|
LIST_ADDQ(list_format, &node->list);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -306,6 +308,8 @@ void parse_logformat_string(char *str, struct proxy *curproxy, struct list *list
|
|||||||
struct logformat_node *tmplf, *back;
|
struct logformat_node *tmplf, *back;
|
||||||
int options = 0;
|
int options = 0;
|
||||||
|
|
||||||
|
curproxy->to_log = LW_INIT;
|
||||||
|
|
||||||
/* flush the list first. */
|
/* flush the list first. */
|
||||||
list_for_each_entry_safe(tmplf, back, list_format, list) {
|
list_for_each_entry_safe(tmplf, back, list_format, list) {
|
||||||
LIST_DEL(&tmplf->list);
|
LIST_DEL(&tmplf->list);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user