При отладке скриптов на  LUA часто необходимо вывести данные в файл для последующего анализа результатов.

Приведу текст и исходник  модуля для записи данных в такой файл.

Особенность данного скрипта в том, что он пишет в лог файл любые данные, в том числе и разворачивает таблицы:

———————————————

Скрипт на LUA для вывода данных в лог-файл NKLog.lua:

————————

local os=os;
local io=io;
local pairs=pairs;
local type=type;
local print=print;
local tostring=tostring;
local dlog=»./»;
module(«NKLog»)
——————
local nameflog=dlog..»NKLog.txt»
——————
local flog=nil
——————————
local function NKsaveT(flog,tab,x1,x2) 
local s1=x1..»>»; local s2=x2..» «;
if type(tab)==»table» then
for idx,t in pairs(tab) do
flog:write( s1..s2..idx..»=»..tostring(t).. «\n»)
if type(tab)==»table» then
NKsaveT(flog,t,s1,s2) 
end
end
end
end
——————
function Log(tab,s) 
local s1; local s2;
if s==nil then s1=»» else s1=s..»:»; end; s2=»»;
s1=os.date()..» : «..s1;
if flog==nil then flog=io.open(nameflog,»w») end
if type(tab)==»table» then
NKsaveT(flog,tab,s1,s2) 
else
flog:write( s1..tostring(tab).. «\n»)
end
flog:flush ()
end

———————————
Данный скрипт необходимо записать в отдельный файл с именем NKLog.lua и поместить в каталог с отлаживаемом скриптом.

—————————————

Тест для лог файла:

require «NKLog»
—————
local x=»функция записывает в лог таблицу»
local y=10
local z={1,2,3,4,5,6}
local w={[«a»]=1,[«b»]=2}
——————
NKLog.Log(x,»x»);
NKLog.Log(y,»y»);
NKLog.Log(z,»z»);
NKLog.Log(w,»w»);

Результат в файле NKLog.txt:

01/25/14 13:04:04 : x:функция записывает в лог таблицу
01/25/14 13:04:04 : y:10
01/25/14 13:04:04 : z:> 1=1
01/25/14 13:04:04 : z:> 2=2
01/25/14 13:04:04 : z:> 3=3
01/25/14 13:04:04 : z:> 4=4
01/25/14 13:04:04 : z:> 5=5
01/25/14 13:04:04 : z:> 6=6
01/25/14 13:04:04 : w:> a=1
01/25/14 13:04:04 : w:> b=2

————————

Исходники  можно взять здесь:  LUA. Запись в log-файл (2)

 

This entry was posted on Суббота, 25 января, 2014 at 13:08 and is filed under QLUA, торговые роботы (МТС). You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Comments are closed at this time.