}
static bool event_get_log_prefix(struct event *event, string_t *log_prefix,
- bool *replace_prefix)
+ bool *replace_prefix, unsigned int *type_pos)
{
bool ret = FALSE;
if (event->log_prefix_replace) {
/* this event replaces all parent log prefixes */
*replace_prefix = TRUE;
+ *type_pos = event->log_prefix == NULL ? 0 :
+ strlen(event->log_prefix);
} else if (event->parent == NULL) {
/* append to default log prefix, don't replace it */
} else {
- if (event_get_log_prefix(event->parent, log_prefix, replace_prefix))
+ if (event_get_log_prefix(event->parent, log_prefix,
+ replace_prefix, type_pos))
ret = TRUE;
}
if (event->log_prefix != NULL) {
{
string_t *log_prefix_str = t_str_new(64);
bool replace_prefix = FALSE;
+ unsigned int type_pos = 0;
struct failure_context ctx = {
.type = log_type,
event->source_linenum, &ctx))
abort_after_event = TRUE;
- if (!event_get_log_prefix(event, log_prefix_str, &replace_prefix)) {
+ if (!event_get_log_prefix(event, log_prefix_str,
+ &replace_prefix, &type_pos)) {
/* keep log prefix as it is */
event_vsend(event, &ctx, fmt, args);
} else if (replace_prefix) {
/* event overrides the log prefix (even if it's "") */
ctx.log_prefix = str_c(log_prefix_str);
+ ctx.log_prefix_type_pos = type_pos;
event_vsend(event, &ctx, fmt, args);
} else {
/* append to log prefix, but don't fully replace it */
struct event *event_get_global(void);
/* Set the appended log prefix string for this event. All the parent events'
- log prefixes will be concatenated together when logging. */
+ log prefixes will be concatenated together when logging. The log type
+ text (e.g. "Info: ") will be inserted before appended log prefixes (but
+ after replaced log prefix). */
struct event *
event_set_append_log_prefix(struct event *event, const char *prefix);
/* Replace the full log prefix string for this event. The parent events' log
},
.result = "replaced2.Info: TEXT",
},
- /*{
+ {
.prefixes = (const struct test_log_prefix []) {
{ TYPE_REPLACE, "replaced1," },
{ TYPE_APPEND, "appended2." },
{ .type = TYPE_END }
},
.result = "replaced1,Info: appended2.TEXT",
- },*/
+ },
{
.prefixes = (const struct test_log_prefix []) {
{ TYPE_APPEND, "appended1," },
.global_log_prefix = "global3.",
.result = "global3.Info: appended1,appended2.TEXT",
},
- /*{
+ {
.prefixes = (const struct test_log_prefix []) {
{ TYPE_APPEND, "appended1," },
{ TYPE_REPLACE, "replaced2." },
{ .type = TYPE_END }
},
.result = "replaced2.Info: appended3#TEXT",
- },*/
+ },
{
.prefixes = (const struct test_log_prefix []) {
{ TYPE_APPEND, "appended1," },
},
.result = "replaced4;Info: TEXT",
},
- /*{
+ {
.prefixes = (const struct test_log_prefix []) {
{ TYPE_APPEND, "appended1," },
{ TYPE_REPLACE, "replaced2." },
{ .type = TYPE_END }
},
.result = "replaced4;Info: appended5-TEXT",
- },*/
+ },
};
const struct event_log_params params = {
.log_type = LOG_TYPE_INFO,