*/
int parse_logformat_string(const char *str, struct proxy *curproxy, struct lf_expr *lf_expr, int options, int cap, char **err);
-int postresolve_logger_list(struct list *loggers, const char *section, const char *section_name);
+int postresolve_logger_list(struct proxy *px, struct list *loggers, const char *section, const char *section_name);
struct logger *dup_logger(struct logger *def);
void free_logger(struct logger *logger);
/* resolves a single logger entry (it is expected to be called
* at postparsing stage)
*
+ * <px> is parent proxy, used for context (may be NULL)
+ *
* Returns err_code which defaults to ERR_NONE and can be set to a combination
* of ERR_WARN, ERR_ALERT, ERR_FATAL and ERR_ABORT in case of errors.
* <msg> could be set at any time (it will usually be set on error, but
* could also be set when no error occurred to report a diag warning), thus is
* up to the caller to check it and to free it.
*/
-static int resolve_logger(struct logger *logger, char **msg)
+static int resolve_logger(struct proxy *px, struct logger *logger, char **msg)
{
struct log_target *target = &logger->target;
int err_code = ERR_NONE;
* Returns err_code which defaults to ERR_NONE and can be set to a combination
* of ERR_WARN, ERR_ALERT, ERR_FATAL and ERR_ABORT in case of errors.
*/
-int postresolve_logger_list(struct list *loggers, const char *section, const char *section_name)
+int postresolve_logger_list(struct proxy *px, struct list *loggers,
+ const char *section, const char *section_name)
{
int err_code = ERR_NONE;
struct logger *logger;
int cur_code;
char *msg = NULL;
- cur_code = resolve_logger(logger, &msg);
+ cur_code = resolve_logger(px, logger, &msg);
if (msg) {
void (*e_func)(const char *fmt, ...) = NULL;
int err_code = ERR_NONE;
/* global log directives */
- err_code |= postresolve_logger_list(&global.loggers, NULL, NULL);
+ err_code |= postresolve_logger_list(NULL, &global.loggers, NULL, NULL);
/* proxy log directives */
for (px = proxies_list; px; px = px->next)
- err_code |= postresolve_logger_list(&px->loggers, "proxy", px->id);
+ err_code |= postresolve_logger_list(px, &px->loggers, "proxy", px->id);
/* log-forward log directives */
for (px = cfg_log_forward; px; px = px->next)
- err_code |= postresolve_logger_list(&px->loggers, "log-forward", px->id);
+ err_code |= postresolve_logger_list(NULL, &px->loggers, "log-forward", px->id);
return err_code;
}