Creat logs in txt file - Printable Version +- Logic Machine Forum (https://forum.logicmachine.net) +-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1) +--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8) +--- Thread: Creat logs in txt file (/showthread.php?tid=760) Pages:
1
2
|
Creat logs in txt file - deimostier - 27.04.2017 Good day! Can you help me with such question: I need to create regular log files *txt type. Each day it will be a new file with a name like date. It is necessary to save it on any shared local net folder thank you RE: Creat logs in txt file - gtsamis - 27.04.2017 Here is a part of my daily report script. It runs in a scheduled script every day at 00:00 and creates a csv file in /tmp folder for object logs of previous day. PS: Credit for parts of the script goes to Edgars Code: -- Set logtime start-end and date to get past day data RE: Creat logs in txt file - deimostier - 02.05.2017 (27.04.2017, 21:55)gtsamis Wrote: Here is a part of my daily report script. It runs in a scheduled script every day at 00:00 and creates a csv file in /tmp folder for object logs of previous day.Sorry, but it is necessary to create only txt files RE: Creat logs in txt file - gtsamis - 02.05.2017 (02.05.2017, 14:41)deimostier Wrote:(27.04.2017, 21:55)gtsamis Wrote: Here is a part of my daily report script. It runs in a scheduled script every day at 00:00 and creates a csv file in /tmp folder for object logs of previous day.Sorry, but it is necessary to create only txt files You just need to change the extension to txt on logfile=string.format('DailyLog_%s.csv', os.date('%d-%m-%Y',log_start)) to logfile=string.format('DailyLog_%s.txt', os.date('%d-%m-%Y',log_start)) the structure although will be the same. RE: Creat logs in txt file - mjaanes - 02.04.2020 I "stole" this script (thank you). It runs perfect, but how can I access (download to PC) the CSV file produced? I have tried Filezilla and can access the Wiser/SL successfully, but neither the user "ftp" nor the user "app" display anything that resembles "/tmp/......" which is the path used above in the following line: result, err = io.writefile ('/tmp/'..logfile, table.concat(buffer, '\r\n')) Thanks in advance RE: Creat logs in txt file - admin - 02.04.2020 FTP path is /home/ftp, just make sure that you have some algorithm to delete old files. Otherwise you can run out of free space at some point. RE: Creat logs in txt file - tassiebean - 12.06.2020 (02.04.2020, 11:20)admin Wrote: FTP path is /home/ftp, just make sure that you have some algorithm to delete old files. Otherwise you can run out of free space at some point.I'm still confused on this point. I used Filezilla to connect and placed a doorbell sound file (at what I'm taking from your post above is /home/ftp). My ftp login was user ftp (can choose from ftp or apps). But my Custom Javascript file appears not to see the copied file. For example, in the following file if I uncomment and use the mozilla file, the sound plays fine. But when written as shown here with the local file, the code does not work. Is it a linux permissions thing? Code: // the following function plays a sound when the doorbell is pressed (Object 0/250/72 is set true) Can you help me? Thanks! RE: Creat logs in txt file - admin - 12.06.2020 See this thread: https://forum.logicmachine.net/showthread.php?tid=1314&pid=7920#pid7920 You need to use apps ftp username and upload to user directory. RE: Creat logs in txt file - tassiebean - 13.06.2020 Thanks! That is very well explained there and now works fine for me. As always, thanks for your quick and helpful replies. Much appreciated. RE: Creat logs in txt file - Trond Hoyem - 13.08.2020 (02.04.2020, 11:20)admin Wrote: FTP path is /home/ftp, just make sure that you have some algorithm to delete old files. Otherwise you can run out of free space at some point.I am not able to find this file... I log in with FileZilla with both "apps" and "ftp", but cannot find this folder. I have neihter the folder /home/ftp In the script I log the err, result, and get true for result and nil for err. RE: Creat logs in txt file - admin - 13.08.2020 The example script writes to /tmp/, which cannot be accessed via FTP. /home/ftp/ is the absolute path for writing from scripts. If you access FTP using ftp user then any file placed into /home/ftp/ will be visible in the base directory. Code: result, err = io.writefile('/home/ftp/' .. logfile, table.concat(buffer, '\r\n')) RE: Creat logs in txt file - Trond Hoyem - 07.01.2021 (02.04.2020, 11:20)admin Wrote: FTP path is /home/ftp, just make sure that you have some algorithm to delete old files. Otherwise you can run out of free space at some point. How can old files be deleted? For writing to new file one will use io.writefile, is there a similar for delete? I have tried to find it, but no luck... RE: Creat logs in txt file - admin - 07.01.2021 os.remove is what you need RE: Creat logs in txt file - phongvucba - 18.06.2024 "I am not able to find this file... I log in with FileZilla with both "apps" and "ftp", but cannot find this folder. I have neihter the folder /home/ftp" . I changed ------------------ if #buffer > 1 then result, err = io.writefile ('/home/ftp/'..logfile, table.concat(buffer, '\r\n')) log('Created log file '..logfile) end -------------------- Can anyone see where that file is saved? I can't see where that file is (27.04.2017, 21:55)gtsamis Wrote: Here is a part of my daily report script. It runs in a scheduled script every day at 00:00 and creates a csv file in /tmp folder for object logs of previous day. Help me !! Can you explain more clearly how to do it, where to put this script, how to get the saved file? Because I don't see it RE: Creat logs in txt file - admin - 18.06.2024 Use ftp login and check base (top level) directory, the one that is marked as / RE: Creat logs in txt file - phongvucba - 18.06.2024 (18.06.2024, 08:14)admin Wrote: Use ftp login and check base (top level) directory, the one that is marked as / The mean ! I still don't see anything. I still don't see anything. I use version 20230612 RE: Creat logs in txt file - Daniel - 18.06.2024 What logs and alerts says after running the script? RE: Creat logs in txt file - phongvucba - 18.06.2024 hi Daniel ! I don't see anything in Alerts and Logs. Prove that the script runs well RE: Creat logs in txt file - admin - 18.06.2024 Script from post #2 won't create a file if there are no logs in the given period. RE: Creat logs in txt file - phongvucba - 18.06.2024 (18.06.2024, 08:36)admin Wrote: Script from post #2 won't create a file if there are no logs in the given period.what do you mean? I don't quite understand, do you mean this script? -------------------------------------------- -- Set logtime start-end and date to get past day data date = os.date('*t') date.hour=0 date.min=0 date.sec=0 log_end=os.time(date)-1 date.day = date.day - 1 log_start=os.time(date) dates = { ['start'] = date, ['end'] = os.date('*t'), } -- Log filename logfile=string.format('DailyLog_%s.csv', os.date('%d-%m-%Y',log_start)) -- list of objects by id objects = {} -- Select objects address and datatype query = 'SELECT address, datatype, name FROM objects' for _, object in ipairs(db:getall(query)) do objects[ tonumber(object.address) ] = { datatype = tonumber(object.datatype), name = tostring(object.name or ''), } end -- csv buffer buffer = { '"date","address","name","value"' } -- get object logs -- query = 'SELECT src, address, datahex, logtime, eventtype FROM objectlog WHERE logtime >= ? ORDER BY id DESC' query = 'SELECT * FROM objectlog WHERE logtime >='..log_start.. ' and logtime<=' .. log_end.. ' ORDER BY id' for _, row in ipairs(db:getall(query)) do object = objects[ tonumber(row.address) ] -- found matching object and event type is group write if object and row.eventtype == 'write' then datatype = object.datatype -- check that object datatype is set if datatype then -- decode data data = knxdatatype.decode(row.datahex, datatype) -- remove null chars from char/string datatype if datatype == dt.char or datatype == dt.string then data = data:gsub('%z+', '') -- date to DD.MM.YYYY elseif datatype == dt.date then data = string.format('%.2d.%.2d.%.2d', data.day, data.month, data.year) -- time to HH:MM:SS elseif datatype == dt.time then data = string.format('%.2d:%.2d:%.2d', data.hour, data.minute, data.second) end else data = '' end -- format csv row logdate = os.date('%d/%m/%Y %H:%M:%S', row.logtime) csv = string.format('%q,%q,%q,%q', logdate, knxlib.decodega(row.address), object.name, tostring(data)) -- add to buffer table.insert(buffer, csv) end end -- write file only when there's data in buffer if #buffer > 1 then result, err = io.writefile ('/home/ftp/'..logfile, table.concat(buffer, '\r\n')) log('Created log file '..logfile) end -- error while writing if err then alert('File write error: %s', tostring(err)) end ------------------------------------------- |