lua 코드 디버깅에 부딪힌 구덩이

1713 단어 lua
1. 잘못 인쇄된 오류 로그
openresty 시작 시 initworker_by_lua_file D:\init.루아 방식으로 파일을 불러옵니다. 루아 코드에 오류가 있으면 error 로그에서 오류 정보를 출력하지 않습니다.
예를 들어 다음 코드:
1. 값이 nil인 변수를 연결합니다
local a
ngx.log(ngx.WARN, "value:" .. a)
ngx.log(ngx.WARN, "Successfully print the value of a")

2. 파일을 읽을 때 파일test.lua가 없습니다.
local f = assert(io.open("test.lua", "r"))
local data = f:read("*all")
f:close()

3. 파일을 쓸 때 경로 D:\\lua\\\\\\\\존재하지 않는 경우
local f = assert(io.open("D:\\lua\\file\\test.lua", "w"))
f:write(data)
f:close()

 
위와 같은 이상입니다. Openresty가 시작될 때 로그에 출력되지 않았지만, 프로그램이 실행을 중지했습니다. 디버깅을 할 때 주의해야 합니다.
현재 좋은 방법은 없습니다. 다만 필요한 곳에 추가 출력 로그를 추가해서 실행 여부를 판단할 뿐입니다.
 
2. attempt to index 글로벌'ngx'(a nil value)
module(...)
function test()
    ngx.log(ngx.WARN, "이것은 테스트입니다")
end
테스트lua 파일에는 위 코드와 같이 이test 함수를 실행할 때 오류 메시지가 표시됩니다.:attempt to index 글로벌'ngx'(a nil value).이제 파일에 다음 코드만 추가하면 됩니다.
local ngx = ngx
또는
module(...)module(...,package.seeall)로 변경
문법
1. 하위 요청
local res1, res2 = ngx.location.capture_multi {                                                                                    {"/test1/index.html"},                                                                                             {"/test2/index.html".. ngx.var.request_uri},                                                                              }
참고: capturemulti 뒤에는 "("이 아님; capture multi의 마지막 요청 뒤에는 쉼표 ","있어도 되고 없어도 됩니다.
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기