Navigation Menu

Skip to content

Commit

Permalink
groonga-httpd: support long error message over NGX_MAX_ERROR_STR
Browse files Browse the repository at this point in the history
NGX_MAX_ERROR_STR is 2048.
  • Loading branch information
kou committed Jan 26, 2015
1 parent bd0a40f commit 9346025
Showing 1 changed file with 44 additions and 8 deletions.
52 changes: 44 additions & 8 deletions src/httpd/nginx-module/ngx_http_groonga_module.c
Expand Up @@ -143,18 +143,54 @@ ngx_http_groonga_logger_log(grn_ctx *ctx, grn_log_level level,
const char level_marks[] = " EACewnid-";
u_char buffer[NGX_MAX_ERROR_STR];
u_char *last;

size_t prefix_size;
size_t message_size;
size_t location_size;
size_t postfix_size;
size_t log_message_size;

#define LOG_PREFIX_FORMAT "%s|%c|%s "
prefix_size =
strlen(timestamp) +
1 /* | */ +
1 /* %c */ +
1 /* | */ +
strlen(title) +
1 /* a space */;
message_size = strlen(message);
if (location && *location) {
last = ngx_slprintf(buffer, buffer + NGX_MAX_ERROR_STR,
"%s|%c|%s %s %s\n",
timestamp, *(level_marks + level), title, message,
location);
location_size = 1 /* a space */ + strlen(location);
} else {
location_size = 0;
}
postfix_size = 1 /* \n */;
log_message_size = prefix_size + message_size + location_size + postfix_size;

if (log_message_size > NGX_MAX_ERROR_STR) {
last = ngx_slprintf(buffer, buffer + NGX_MAX_ERROR_STR,
"%s|%c|%s %s\n",
timestamp, *(level_marks + level), title, message);
LOG_PREFIX_FORMAT,
timestamp, *(level_marks + level), title);
ngx_write_fd(logger_data->file->fd, buffer, last - buffer);
ngx_write_fd(logger_data->file->fd, (void *)message, message_size);
if (location_size > 0) {
ngx_write_fd(logger_data->file->fd, " ", 1);
ngx_write_fd(logger_data->file->fd, (void *)location, location_size);
}
ngx_write_fd(logger_data->file->fd, "\n", 1);
} else {
if (location && *location) {
last = ngx_slprintf(buffer, buffer + NGX_MAX_ERROR_STR,
LOG_PREFIX_FORMAT " %s %s\n",
timestamp, *(level_marks + level), title, message,
location);
} else {
last = ngx_slprintf(buffer, buffer + NGX_MAX_ERROR_STR,
LOG_PREFIX_FORMAT " %s\n",
timestamp, *(level_marks + level), title, message);
}
ngx_write_fd(logger_data->file->fd, buffer, last - buffer);
}
ngx_write_fd(logger_data->file->fd, buffer, last - buffer);
#undef LOG_PREFIX_FORMAT
}

static void
Expand Down

0 comments on commit 9346025

Please sign in to comment.