changeset 907:424636f52f44

$r->log_error()
author Igor Sysoev <igor@sysoev.ru>
date Tue, 12 Dec 2006 19:33:13 +0000
parents a0310ac2814f
children 82adc19b4b4d
files src/http/modules/perl/nginx.xs
diffstat 1 files changed, 34 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/modules/perl/nginx.xs
+++ b/src/http/modules/perl/nginx.xs
@@ -846,3 +846,37 @@ variable(r, name, value = NULL)
     ngx_http_perl_set_targ(vv->data, vv->len, 0);
 
     ST(0) = TARG;
+
+
+void
+log_error(r, err, msg)
+    CODE:
+
+    ngx_http_request_t  *r;
+    SV                  *err, *msg;
+    u_char              *p;
+    STRLEN               len;
+    ngx_err_t            e;
+
+    ngx_http_perl_set_request(r);
+
+    err = ST(1);
+
+    if (SvROK(err) && SvTYPE(SvRV(err)) == SVt_PV) {
+        err = SvRV(err);
+    }
+
+    e = SvIV(err);
+
+    msg = ST(2);
+
+    if (SvROK(msg) && SvTYPE(SvRV(msg)) == SVt_PV) {
+        msg = SvRV(msg);
+    }
+
+    p = (u_char *) SvPV(msg, len);
+
+    ngx_log_error(NGX_LOG_ERR, r->connection->log, e,
+                  "perl: %s", p);
+
+    XSRETURN_EMPTY;