Je souhaite insérer des points de journal (io.write) dans mon code Lua, lui-même en configuration nginx (à l'aide de HttpLuaModule pour nginx) Comment faire ça? Les journaux d'accès et d'erreurs ne les affichent pas.
Si vous utilisez nginx, vous devez utiliser ngx.log. Par exemple:
ngx.log(ngx.STDERR, 'your message here')
Pour un exemple pratique, voir http://linuxfiddle.net/f/77630edc-b851-487c-b2c8-aa6c9b858ebb
Pour la documentation, voir http://wiki.nginx.org/HttpLuaModule#ngx.log
Une autre option pour le débogage Lua dans nginx (en plus de "l’impression") consiste à utiliser un Lua IDE qui prend en charge le débogage distant. J'ai posté des instructions sur la manière de procéder avec ZeroBrane Studio IDE. Une fois que vous l'avez configuré, vous obtenez la plupart des fonctions de débogage que vous pouvez attendre, telles que le pas à pas, les points d'arrêt, les inspections de variables, les traces de pile et une console pour exécuter des commandes Lua à distance.
un autre outil de dépannage pour openresty est lua-resty-console , qui vous permet de vérifier la variable lua, les modules importés, les fonctions d'appel, etc. nignx.conf. lancez le client et c'est parti.
[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" }