Advertisement
riccefarias76

Untitled

Apr 19th, 2024 (edited)
652
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var spawn = require('child_process').spawn;
  2. var filename = '/opt/traccar/logs/tracker-server.log';
  3.  
  4. const fs = require("fs");
  5.  
  6. console.log("Starting logger service...");
  7.  
  8. var tail = spawn("tail", ['-f',filename]);
  9.  
  10. const imeiBindings = {};
  11. const hashBindings = {};
  12.  
  13. const tmpLogs = {};
  14.  
  15. tail.stdout.on("data", async function (data) {
  16.  
  17.     const text = data.toString();
  18.     //const matches = text.matchAll(/(?<data>[0-9]{4}-[0-9]{2}-[0-9]{2}) (?<hora>[0-9]{2}:[0-9]{2}:[0-9]{2})  [A-Za-z]*: \[(?<hash>[A-Za-z0-9]*): [0-9]*( (>|<) [0-9.:]*\] \[[A-Z]*\] HEX: ([A-Za-z0-9]*)|\] [0-9.:]* .*id: (?<imeib>[A-Za-z0-9]*), (.*)|\] .*id: (?<imeic>[A-Za-z0-9]*), (.*)|\] [0-9.:]* .*)\n/gm);
  19.  const matches = text.matchAll(/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}  (.*?): \[([A-Za-z0-9]*)(: [A-Za-z0-9]* (>|<) ([A-Za-z0-9.]*))?\] ([A-Za-z0-9]*|id: (.*?), (.*?))\n/g);
  20.  
  21.     for(m of matches){
  22.  
  23.         console.log(m);
  24.  
  25.  
  26.         let imei = false;
  27.         let hash = false;
  28.  
  29.         if(m[7]){
  30.             imei = m[7];
  31.         }else if(m[8]){
  32.             imei = m[8];
  33.         }
  34.  
  35.         if(m[2]){
  36.             hash = m[2];
  37.         }
  38.  
  39.  
  40.        
  41.         if(imei){                  
  42.             imeiBindings[imei] = hash;
  43.             hashBindings[hash] = imei;
  44.         }
  45.  
  46.         if(hashBindings[m[2]]){
  47.  
  48.             const folderName = "./logs/"+new Date().toISOString().split("T")[0];
  49.             const fileName = hashBindings[hash]+".log";
  50.            
  51.              if (!fs.existsSync(folderName)) {
  52.                     fs.mkdirSync(folderName);
  53.              }     
  54.  
  55.  
  56.             if(tmpLogs[hash]){
  57.                 for(let t of tmpLogs[hash]){
  58.                     const _folderName = "./logs/"+new Date().toISOString().split("T")[0];
  59.                     console.log("insert "+fileName+" from tmp");
  60.                     await fs.promises.appendFile(_folderName+"/"+fileName,t[0]);
  61.                 }
  62.  
  63.                 delete tmpLogs[hash];
  64.             }
  65.  
  66.  
  67.  
  68.             await fs.promises.appendFile(folderName+"/"+fileName,m[0]);
  69.  
  70.         }else{
  71.             if(!tmpLogs[hash]){
  72.                 tmpLogs[hash] = [];
  73.             }
  74.             tmpLogs[hash].push(m);
  75.         }  
  76.     }
  77.  
  78.  
  79. });
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement