it-swarm.com.de

Wie Debuggen von Lua-Code in Nginx Config?

Ich möchte Protokollpunkte (io.write) in meinen Lua-Code einfügen, der sich selbst in der Nginx-Konfiguration befindet (mit HttpLuaModule für Nginx). Wie geht das? Zugriffs- und Fehlerprotokolle zeigen sie nicht an.

11
Mannu

Wenn Sie unter nginx laufen, sollten Sie ngx.log verwenden. Z.B:

ngx.log(ngx.STDERR, 'your message here')

Ein funktionierendes Beispiel finden Sie unter http://linuxfiddle.net/f/77630edc-b851-487c-b2c8-aa6c9b858ebb

Dokumentation finden Sie unter http://wiki.nginx.org/HttpLuaModule#ngx.log

19
mikaraento

Eine weitere Option für das Lua-Debugging in Nginx (zusätzlich zum "Drucken") ist die Verwendung eines Lua IDE, das das Remote-Debugging unterstützt. Ich habe Anweisungen veröffentlicht, wie dies mit ZeroBrane Studio IDE geschehen kann. Nachdem Sie es eingerichtet haben, erhalten Sie die meisten Debugging-Funktionen, die Sie erwarten, wie z. B. Stepping, Haltepunkte, Inspektionen von Variablen, Stack-Traces und eine Konsole, um Lua-Befehle remote auszuführen.

5
Paul Kulchenko

ein weiteres Tool zur Fehlerbehebung für openresty ist lua-resty-console , mit dem Sie die lua-Variable, importierte Module, Aufruffunktionen usw. überprüfen können. Sie müssen es nur mit luarocks installieren und ein paar Zeilen in Sie einfügen nignx.conf. Starten Sie den Client und los geht's.

[9] ngx(content)> ngx.config.prefix()
=> /workspace/lua-resty-console/
[10] ngx(content)> ngx.config.ngx_lua_version
=> 10011
[11] ngx(content)> ngx.config.nginx_configure()
=>  --prefix=/usr/local/Cellar/openresty/1.13.6.1/nginx --with-cc-opt='-O2 -I/usr/local/include -I/usr/local/opt/pcre/include -I/usr/local/opt/openresty-openssl/include' --add-module=../ngx_devel_kit-0.3.0 --add-module=../echo-nginx-module-0.61 ...


[12] ngx(content)> ngx.sha →→
ngx.sha1_bin()  ngx.shared.     
[12] ngx(content)> ngx.shared. →→
ngx.shared.mycache.    ngx.shared.metrics.  
[12] ngx(content)> c = ngx.shared.mycache
=> nil
[13] ngx(content)> c
=> { <userdata 1>,
  <metatable> = <1>{
    __index = <table 1>,
    add = <function 1>,
    delete = <function 2>,
    flush_all = <function 3>,
    flush_expired = <function 4>,
    get = <function 5>,
    get_keys = <function 6>,
    get_stale = <function 7>,
    incr = <function 8>,
    llen = <function 9>,
    lpop = <function 10>,
    lpush = <function 11>,
    replace = <function 12>,
    rpop = <function 13>,
    rpush = <function 14>,
    safe_add = <function 15>,
    safe_set = <function 16>,
    set = <function 17>
  }
}
[14] ngx(content)> c:set('a', 1)
=> true
[15] ngx(content)> c:get('a')
=> 1
[16] ngx(content)> c:get_keys()
=> { "a" }
0
Nick X