打印结果
用法
print_r(table,"post method:Login")
代码
local rpc_log_off = 0
local function write_file ( fd, str)
if fd then
fd: write ( str .. '\n' )
end
end
local function dump_value_ ( v)
if type ( v) == "string" then
v = "\"" .. v .. "\""
end
return tostring ( v)
end
local function split ( input, delimiter)
input = tostring ( input)
delimiter = tostring ( delimiter)
if ( delimiter == "" ) then return false end
local pos, arr = 0 , { }
for st, sp in function ( ) return string. find ( input, delimiter, pos, true ) end do
table. insert ( arr, string. sub ( input, pos, st - 1 ) )
pos = sp + 1
end
table. insert ( arr, string. sub ( input, pos) )
return arr
end
local function trim ( input)
return ( string. gsub ( input, "^%s*(.-)%s*$" , "%1" ) )
end
local function dump ( dbg, value, desciption, nesting)
if type ( nesting) ~= "number" then nesting = 3 end
local lookupTable = { }
local result = { }
local traceback = split ( debug. traceback ( "" , 2 ) , "\n" )
local function dump_ ( value, desciption, indent, nest, keylen)
desciption = desciption or "<var>"
local spc = ""
if type ( keylen) == "number" then
spc = string. rep ( " " , keylen - string. len ( dump_value_ ( desciption) ) )
end
if type ( value) ~= "table" then
result[ # result + 1 ] = string. format ( "%s%s%s = %s" , indent, dump_value_ ( desciption) , spc, dump_value_ ( value) )
elseif lookupTable[ tostring ( value) ] then
result[ # result + 1 ] = string. format ( "%s%s%s = *REF*" , indent, dump_value_ ( desciption) , spc)
else
lookupTable[ tostring ( value) ] = true
if nest > nesting then
result[ # result + 1 ] = string. format ( "%s%s = *MAX NESTING*" , indent, dump_value_ ( desciption) )
else
result[ # result + 1 ] = string. format ( "%s%s = {" , indent, dump_value_ ( desciption) )
local indent2 = indent.. " "
local keys = { }
local keylen = 0
local values = { }
for k, v in pairs ( value) do
keys[ # keys + 1 ] = k
local vk = dump_value_ ( k)
local vkl = string. len ( vk)
if vkl > keylen then keylen = vkl end
values[ k] = v
end
table. sort ( keys, function ( a, b)
if type ( a) == "number" and type ( b) == "number" then
return a < b
else
return tostring ( a) < tostring ( b)
end
end )
for i, k in ipairs ( keys) do
dump_ ( values[ k] , k, indent2, nest + 1 , keylen)
end
result[ # result + 1 ] = string. format ( "%s}" , indent)
end
end
end
dump_ ( value, desciption, "- " , 1 )
local len = dbg: seek ( "end" )
if len > ( 2 * 1024 * 1024 ) then
os. execute ( "echo '' > /tmp/rpc.log" )
end
for i, line in ipairs ( result) do
write_file ( dbg, line)
end
end
local function print_string ( dbg, str)
write_file ( dbg, str)
end
function print_r ( data, key, depth)
if not key then
key = ""
end
if not depth then
depth = 3
end
local dbg = io. open ( "/tmp/rpc.log" , "w+" )
if rpc_log_off == 0 then
if ( type ( data) == "table" ) then
dump ( dbg, data, key, depth)
elseif ( type ( data) == "string" ) then
print_string ( dbg, key .. data) ;
end
else
end
if dbg then
dbg: close ( )
end
end