LUA. Запись данных в log-файл

25 января, 2014

При отладке скриптов на  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)

 

Новости с фронтов QLUA

14 января, 2014

Наконец-то закончил реализацию возможности  использовать переменные, таблицы и функции любого скрипта QLUA в любом другом исполняемом скрипте.

Особенность реализации — без создания копий.

Т е обращение к таблицам данных других скриптов происходит также быстро,  как к локальным  таблицам скрипта.

В итоге получились следующие новые возможности:

1) использовать в любом скрипте функции,  которые загружены в других скриптах.

2)  использовать во всех скриптах  любые таблицы данных QUIK, загрузив их в таблицы луа один раз в любом из скриптов.  Так как копии не создаются, то обращение в других скриптах также быстро как и в скрипте, который их загружал.

3) результаты вычислений в индикаторах использовать в не индикаторных скриптах.

4)  реализовать кластер виртуальных машин QLUA.

5)  загружать, модули сторонних разработчиков типа IUP, лишь в один скрипт, а обращаться к ним из любого другого скрипта.

6)   писать  роботов на QLUA в терминале QUIK без дублирования информации и кода функций.

Изучение возможностей продолжается.