mirror of
https://github.com/zotanmew/nginx-rtmp-module.git
synced 2024-05-23 02:39:32 +02:00
renamed log context & implemented command/name/args in access logger
This commit is contained in:
parent
3dff38d716
commit
b85499c144
|
@ -310,7 +310,7 @@ typedef struct {
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ngx_str_t *client;
|
ngx_str_t *client;
|
||||||
ngx_rtmp_session_t *session;
|
ngx_rtmp_session_t *session;
|
||||||
} ngx_rtmp_log_ctx_t;
|
} ngx_rtmp_error_log_ctx_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -133,7 +133,7 @@ ngx_rtmp_init_session(ngx_connection_t *c, ngx_rtmp_addr_conf_t *addr_conf)
|
||||||
{
|
{
|
||||||
ngx_rtmp_session_t *s;
|
ngx_rtmp_session_t *s;
|
||||||
ngx_rtmp_core_srv_conf_t *cscf;
|
ngx_rtmp_core_srv_conf_t *cscf;
|
||||||
ngx_rtmp_log_ctx_t *ctx;
|
ngx_rtmp_error_log_ctx_t *ctx;
|
||||||
|
|
||||||
s = ngx_pcalloc(c->pool, sizeof(ngx_rtmp_session_t) +
|
s = ngx_pcalloc(c->pool, sizeof(ngx_rtmp_session_t) +
|
||||||
sizeof(ngx_chain_t *) * ((ngx_rtmp_core_srv_conf_t *)
|
sizeof(ngx_chain_t *) * ((ngx_rtmp_core_srv_conf_t *)
|
||||||
|
@ -152,7 +152,7 @@ ngx_rtmp_init_session(ngx_connection_t *c, ngx_rtmp_addr_conf_t *addr_conf)
|
||||||
c->data = s;
|
c->data = s;
|
||||||
s->connection = c;
|
s->connection = c;
|
||||||
|
|
||||||
ctx = ngx_palloc(c->pool, sizeof(ngx_rtmp_log_ctx_t));
|
ctx = ngx_palloc(c->pool, sizeof(ngx_rtmp_error_log_ctx_t));
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
ngx_rtmp_close_connection(c);
|
ngx_rtmp_close_connection(c);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -202,9 +202,9 @@ ngx_rtmp_init_session(ngx_connection_t *c, ngx_rtmp_addr_conf_t *addr_conf)
|
||||||
static u_char *
|
static u_char *
|
||||||
ngx_rtmp_log_error(ngx_log_t *log, u_char *buf, size_t len)
|
ngx_rtmp_log_error(ngx_log_t *log, u_char *buf, size_t len)
|
||||||
{
|
{
|
||||||
u_char *p;
|
u_char *p;
|
||||||
ngx_rtmp_session_t *s;
|
ngx_rtmp_session_t *s;
|
||||||
ngx_rtmp_log_ctx_t *ctx;
|
ngx_rtmp_error_log_ctx_t *ctx;
|
||||||
|
|
||||||
if (log->action) {
|
if (log->action) {
|
||||||
p = ngx_snprintf(buf, len, " while %s", log->action);
|
p = ngx_snprintf(buf, len, " while %s", log->action);
|
||||||
|
|
|
@ -49,35 +49,37 @@ typedef struct {
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ngx_str_t name;
|
ngx_str_t name;
|
||||||
ngx_array_t *ops; /* ngx_rtmp_log_op_t */
|
ngx_array_t *ops; /* ngx_rtmp_log_op_t */
|
||||||
} ngx_rtmp_log_fmt_t;
|
} ngx_rtmp_log_fmt_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ngx_open_file_t *file;
|
ngx_open_file_t *file;
|
||||||
time_t disk_full_time;
|
time_t disk_full_time;
|
||||||
time_t error_log_time;
|
time_t error_log_time;
|
||||||
ngx_rtmp_log_fmt_t *format;
|
ngx_rtmp_log_fmt_t *format;
|
||||||
} ngx_rtmp_log_t;
|
} ngx_rtmp_log_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ngx_array_t *logs; /* ngx_rtmp_log_t */
|
ngx_array_t *logs; /* ngx_rtmp_log_t */
|
||||||
ngx_uint_t off;
|
ngx_uint_t off;
|
||||||
} ngx_rtmp_log_app_conf_t;
|
} ngx_rtmp_log_app_conf_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ngx_array_t formats; /* ngx_rtmp_log_fmt_t */
|
ngx_array_t formats; /* ngx_rtmp_log_fmt_t */
|
||||||
ngx_uint_t combined_used;
|
ngx_uint_t combined_used;
|
||||||
} ngx_rtmp_log_main_conf_t;
|
} ngx_rtmp_log_main_conf_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u_char name[NGX_RTMP_MAX_NAME];
|
unsigned play:1;
|
||||||
u_char args[NGX_RTMP_MAX_NAME];
|
unsigned publish:1;
|
||||||
} ngx_rtmp_log_ctx_struct_t;
|
u_char name[NGX_RTMP_MAX_NAME];
|
||||||
|
u_char args[NGX_RTMP_MAX_ARGS];
|
||||||
|
} ngx_rtmp_log_ctx_t;
|
||||||
|
|
||||||
|
|
||||||
static ngx_str_t ngx_rtmp_access_log = ngx_string(NGX_HTTP_LOG_PATH);
|
static ngx_str_t ngx_rtmp_access_log = ngx_string(NGX_HTTP_LOG_PATH);
|
||||||
|
@ -132,7 +134,8 @@ ngx_module_t ngx_rtmp_log_module = {
|
||||||
|
|
||||||
|
|
||||||
static ngx_str_t ngx_rtmp_combined_fmt =
|
static ngx_str_t ngx_rtmp_combined_fmt =
|
||||||
ngx_string("$remote_addr - \"$app\" \"$name\" \"$args\" [$time_local] "
|
ngx_string("$remote_addr [$time_local] $command "
|
||||||
|
"\"$app\" \"$name\" \"$args\" - "
|
||||||
"$bytes_received $bytes_sent "
|
"$bytes_received $bytes_sent "
|
||||||
"\"$pageurl\" \"$flashver\" ($session_readable_time)");
|
"\"$pageurl\" \"$flashver\" ($session_readable_time)");
|
||||||
|
|
||||||
|
@ -152,7 +155,6 @@ ngx_rtmp_log_var_default_getdata(ngx_rtmp_session_t *s, u_char *buf,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
ngx_rtmp_log_var_number_getlen(ngx_rtmp_session_t *s, ngx_rtmp_log_op_t *op)
|
ngx_rtmp_log_var_number_getlen(ngx_rtmp_session_t *s, ngx_rtmp_log_op_t *op)
|
||||||
{
|
{
|
||||||
|
@ -204,11 +206,44 @@ ngx_rtmp_log_var_session_string_getdata(ngx_rtmp_session_t *s, u_char *buf,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static size_t
|
||||||
|
ngx_rtmp_log_var_command_getlen(ngx_rtmp_session_t *s,
|
||||||
|
ngx_rtmp_log_op_t *op)
|
||||||
|
{
|
||||||
|
return sizeof("PLAY+PUBLISH") - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static u_char *
|
||||||
|
ngx_rtmp_log_var_command_getdata(ngx_rtmp_session_t *s, u_char *buf,
|
||||||
|
ngx_rtmp_log_op_t *op)
|
||||||
|
{
|
||||||
|
ngx_rtmp_log_ctx_t *ctx;
|
||||||
|
ngx_str_t *cmd;
|
||||||
|
|
||||||
|
static ngx_str_t commands[] = {
|
||||||
|
ngx_string("NONE"),
|
||||||
|
ngx_string("PLAY"),
|
||||||
|
ngx_string("PUBLISH"),
|
||||||
|
ngx_string("PLAY+PUBLISH")
|
||||||
|
};
|
||||||
|
|
||||||
|
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_log_module);
|
||||||
|
if (ctx == NULL) {
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd = &commands[ctx->play + ctx->publish * 2];
|
||||||
|
|
||||||
|
return ngx_cpymem(buf, cmd->data, cmd->len);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
ngx_rtmp_log_var_context_cstring_getlen(ngx_rtmp_session_t *s,
|
ngx_rtmp_log_var_context_cstring_getlen(ngx_rtmp_session_t *s,
|
||||||
ngx_rtmp_log_op_t *op)
|
ngx_rtmp_log_op_t *op)
|
||||||
{
|
{
|
||||||
return 0; /*TODO*/
|
return ngx_max(NGX_RTMP_MAX_NAME, NGX_RTMP_MAX_ARGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -216,7 +251,20 @@ static u_char *
|
||||||
ngx_rtmp_log_var_context_cstring_getdata(ngx_rtmp_session_t *s, u_char *buf,
|
ngx_rtmp_log_var_context_cstring_getdata(ngx_rtmp_session_t *s, u_char *buf,
|
||||||
ngx_rtmp_log_op_t *op)
|
ngx_rtmp_log_op_t *op)
|
||||||
{
|
{
|
||||||
return buf; /*TODO*/
|
ngx_rtmp_log_ctx_t *ctx;
|
||||||
|
u_char *p;
|
||||||
|
|
||||||
|
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_log_module);
|
||||||
|
if (ctx == NULL) {
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
p = (u_char *) ctx + op->offset;
|
||||||
|
while (*p) {
|
||||||
|
*buf++ = *p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -350,15 +398,20 @@ static ngx_rtmp_log_var_t ngx_rtmp_log_vars[] = {
|
||||||
ngx_rtmp_log_var_session_string_getdata,
|
ngx_rtmp_log_var_session_string_getdata,
|
||||||
offsetof(ngx_rtmp_session_t, page_url) },
|
offsetof(ngx_rtmp_session_t, page_url) },
|
||||||
|
|
||||||
|
{ ngx_string("command"),
|
||||||
|
ngx_rtmp_log_var_command_getlen,
|
||||||
|
ngx_rtmp_log_var_command_getdata,
|
||||||
|
0 },
|
||||||
|
|
||||||
{ ngx_string("name"),
|
{ ngx_string("name"),
|
||||||
ngx_rtmp_log_var_context_cstring_getlen,
|
ngx_rtmp_log_var_context_cstring_getlen,
|
||||||
ngx_rtmp_log_var_context_cstring_getdata,
|
ngx_rtmp_log_var_context_cstring_getdata,
|
||||||
offsetof(ngx_rtmp_log_ctx_struct_t, name) },
|
offsetof(ngx_rtmp_log_ctx_t, name) },
|
||||||
|
|
||||||
{ ngx_string("args"),
|
{ ngx_string("args"),
|
||||||
ngx_rtmp_log_var_context_cstring_getlen,
|
ngx_rtmp_log_var_context_cstring_getlen,
|
||||||
ngx_rtmp_log_var_context_cstring_getdata,
|
ngx_rtmp_log_var_context_cstring_getdata,
|
||||||
offsetof(ngx_rtmp_log_ctx_struct_t, args) },
|
offsetof(ngx_rtmp_log_ctx_t, args) },
|
||||||
|
|
||||||
{ ngx_string("bytes_sent"),
|
{ ngx_string("bytes_sent"),
|
||||||
ngx_rtmp_log_var_session_uint32_getlen,
|
ngx_rtmp_log_var_session_uint32_getlen,
|
||||||
|
@ -726,13 +779,44 @@ invalid:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static ngx_rtmp_log_ctx_t *
|
||||||
|
ngx_rtmp_log_set_names(ngx_rtmp_session_t *s, u_char *name, u_char *args)
|
||||||
|
{
|
||||||
|
ngx_rtmp_log_ctx_t *ctx;
|
||||||
|
|
||||||
|
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_log_module);
|
||||||
|
if (ctx == NULL) {
|
||||||
|
ctx = ngx_pcalloc(s->connection->pool, sizeof(ngx_rtmp_log_ctx_t));
|
||||||
|
if (ctx == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngx_rtmp_set_ctx(s, ctx, ngx_rtmp_log_module);
|
||||||
|
}
|
||||||
|
|
||||||
|
ngx_memcpy(ctx->name, name, NGX_RTMP_MAX_NAME);
|
||||||
|
ngx_memcpy(ctx->args, args, NGX_RTMP_MAX_ARGS);
|
||||||
|
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static ngx_int_t
|
static ngx_int_t
|
||||||
ngx_rtmp_log_publish(ngx_rtmp_session_t *s, ngx_rtmp_publish_t *v)
|
ngx_rtmp_log_publish(ngx_rtmp_session_t *s, ngx_rtmp_publish_t *v)
|
||||||
{
|
{
|
||||||
|
ngx_rtmp_log_ctx_t *ctx;
|
||||||
|
|
||||||
if (s->auto_pushed) {
|
if (s->auto_pushed) {
|
||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx = ngx_rtmp_log_set_names(s, v->name, v->args);
|
||||||
|
if (ctx == NULL) {
|
||||||
|
goto next;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx->publish = 1;
|
||||||
|
|
||||||
next:
|
next:
|
||||||
return next_publish(s, v);
|
return next_publish(s, v);
|
||||||
}
|
}
|
||||||
|
@ -741,10 +825,19 @@ next:
|
||||||
static ngx_int_t
|
static ngx_int_t
|
||||||
ngx_rtmp_log_play(ngx_rtmp_session_t *s, ngx_rtmp_play_t *v)
|
ngx_rtmp_log_play(ngx_rtmp_session_t *s, ngx_rtmp_play_t *v)
|
||||||
{
|
{
|
||||||
|
ngx_rtmp_log_ctx_t *ctx;
|
||||||
|
|
||||||
if (s->auto_pushed) {
|
if (s->auto_pushed) {
|
||||||
goto next;
|
goto next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctx = ngx_rtmp_log_set_names(s, v->name, v->args);
|
||||||
|
if (ctx == NULL) {
|
||||||
|
goto next;
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx->play = 1;
|
||||||
|
|
||||||
next:
|
next:
|
||||||
return next_play(s, v);
|
return next_play(s, v);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue