update runtimeCheckLog && routes
This commit is contained in:
		
							parent
							
								
									ceec326b21
								
							
						
					
					
						commit
						247c4364c8
					
				| 
						 | 
				
			
			@ -64,7 +64,7 @@ export async function runtimeCheckLogs(folderPath) {
 | 
			
		|||
      //get date now
 | 
			
		||||
 | 
			
		||||
      //check new file
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
      await fileList
 | 
			
		||||
        ?.filter((i) => fileList_old.includes(i) === false)
 | 
			
		||||
        ?.forEach((fileName) => {
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ export async function runtimeCheckLogs(folderPath) {
 | 
			
		|||
          const filePath = `${folderPath}/${fileName}`;
 | 
			
		||||
          const scan = fs.watchFile(
 | 
			
		||||
            filePath,
 | 
			
		||||
            { interval: 120000 },
 | 
			
		||||
            { interval: 5000 },
 | 
			
		||||
            async (eventType) => {
 | 
			
		||||
              //check special item, extra RAM, error in log
 | 
			
		||||
              let lines = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -85,61 +85,114 @@ export async function runtimeCheckLogs(folderPath) {
 | 
			
		|||
                  .map((obj) => obj.$original.value)
 | 
			
		||||
                  .map(async (value) => {
 | 
			
		||||
                    if (line.search(value) !== -1) {
 | 
			
		||||
                      const log = await LogDetectFile.findBy(
 | 
			
		||||
                        "file_name",
 | 
			
		||||
                        fileName
 | 
			
		||||
                      );
 | 
			
		||||
                      let checkLog = await Database.rawQuery(
 | 
			
		||||
                        "select * from log_reports where id_file = " +
 | 
			
		||||
                          log?.id_ldf +
 | 
			
		||||
                          " and line = " +
 | 
			
		||||
                          (index + 1) +
 | 
			
		||||
                          " and detected_content='" +
 | 
			
		||||
                          value +
 | 
			
		||||
                          "'"
 | 
			
		||||
                      );
 | 
			
		||||
                      console.log(checkLog[0].length)
 | 
			
		||||
                      if (checkLog[0].length === 0) {
 | 
			
		||||
                        console.log(content[index])
 | 
			
		||||
                        await LogReport.create({
 | 
			
		||||
                          detected_content: value,
 | 
			
		||||
                          line: index + 1,
 | 
			
		||||
                          id_file: log?.id_ldf,
 | 
			
		||||
                        });
 | 
			
		||||
                        lines.push(index + 1);
 | 
			
		||||
                      let keyWord = "";
 | 
			
		||||
                      line.split(" ").map((word) => {
 | 
			
		||||
                        if (word.toLocaleLowerCase().includes(value)) {
 | 
			
		||||
                          keyWord = keyWord + word;
 | 
			
		||||
                        }
 | 
			
		||||
                      });
 | 
			
		||||
                      if (value.length === keyWord.length) {
 | 
			
		||||
                        const log = await LogDetectFile.findBy(
 | 
			
		||||
                          "file_name",
 | 
			
		||||
                          fileName
 | 
			
		||||
                        );
 | 
			
		||||
                        let checkLog = await Database.rawQuery(
 | 
			
		||||
                          "select * from log_reports where id_file = " +
 | 
			
		||||
                            log?.id_ldf +
 | 
			
		||||
                            " and line = " +
 | 
			
		||||
                            (index + 1) +
 | 
			
		||||
                            " and detected_content='" +
 | 
			
		||||
                            value +
 | 
			
		||||
                            "'"
 | 
			
		||||
                        );
 | 
			
		||||
                        console.log(checkLog[0].length);
 | 
			
		||||
                        if (checkLog[0].length === 0) {
 | 
			
		||||
                          console.log(content[index]);
 | 
			
		||||
                          await LogReport.create({
 | 
			
		||||
                            detected_content: value,
 | 
			
		||||
                            line: index + 1,
 | 
			
		||||
                            id_file: log?.id_ldf,
 | 
			
		||||
                          });
 | 
			
		||||
                          lines.push(index + 1);
 | 
			
		||||
                        }
 | 
			
		||||
                      }
 | 
			
		||||
                    }
 | 
			
		||||
                  });
 | 
			
		||||
              });
 | 
			
		||||
              //true: import log to log_report table, send report to Zulip
 | 
			
		||||
              setTimeout(async() => {
 | 
			
		||||
              setTimeout(async () => {
 | 
			
		||||
                if (lines.length === 0) {
 | 
			
		||||
                  console.log(`${fileName} has changed (${eventType})---Good`);
 | 
			
		||||
                } else {
 | 
			
		||||
                  console.log(
 | 
			
		||||
                    `${fileName} has changed (${eventType})---SOS---${lines.length}`
 | 
			
		||||
                  );
 | 
			
		||||
                    let fileDetect = await LogDetectFile.findBy(
 | 
			
		||||
                      "file_name",
 | 
			
		||||
                      fileName
 | 
			
		||||
                    );
 | 
			
		||||
                  let fileDetect = await LogDetectFile.findBy(
 | 
			
		||||
                    "file_name",
 | 
			
		||||
                    fileName
 | 
			
		||||
                  );
 | 
			
		||||
 | 
			
		||||
                    let logsDetect = await Database.rawQuery(
 | 
			
		||||
                      "select * from log_reports where id_file = " + fileDetect?.id_ldf
 | 
			
		||||
                    );
 | 
			
		||||
                    let content = ":warning: :warning: "+fileName+"\n\n|  | Item/error | Line | Detected at | Report\n|---|:---:|:---:|:---:|:-----------:\n"
 | 
			
		||||
                    if(logsDetect[0].length > 10){
 | 
			
		||||
                      content = content + "|1|**" + logsDetect[0][0].detected_content +"**|" + logsDetect[0][0].line +"|"+logsDetect[0][0].created_at+"|[View](https://auto.danielvu.com/api/log?name="+fileName+")\n|...|**...**|...|...|...\n"
 | 
			
		||||
                      logsDetect[0].slice(logsDetect[0].length-6, logsDetect[0].length-1)?.map((log, index)=>{
 | 
			
		||||
                        content = content + "|" + (index+1+logsDetect[0].length-6) +"|**" + log.detected_content +"**|" + log.line +"|"+log.created_at+"|[View](https://auto.danielvu.com/api/log?name="+fileName+")\n"
 | 
			
		||||
                      })
 | 
			
		||||
                    }else{
 | 
			
		||||
                      logsDetect[0].map((log, index)=>{
 | 
			
		||||
                        content = content + "|" + (index+1) +"|**" + log.detected_content +"**|" + log.line +"|"+log.created_at+"|[View](https://auto.danielvu.com/api/log?name="+fileName+")\n"
 | 
			
		||||
                      })
 | 
			
		||||
                    }
 | 
			
		||||
                  let logsDetect = await Database.rawQuery(
 | 
			
		||||
                    "select * from log_reports where id_file = " +
 | 
			
		||||
                      fileDetect?.id_ldf
 | 
			
		||||
                  );
 | 
			
		||||
                  let content =
 | 
			
		||||
                    ":warning: :warning: " +
 | 
			
		||||
                    fileName +
 | 
			
		||||
                    "\n\n|  | Item/error | Line | Detected at | Report\n|---|:---:|:---:|:---:|:-----------:\n";
 | 
			
		||||
                  if (logsDetect[0].length > 10) {
 | 
			
		||||
                    content =
 | 
			
		||||
                      content +
 | 
			
		||||
                      "|1|**" +
 | 
			
		||||
                      logsDetect[0][0].detected_content +
 | 
			
		||||
                      "**|" +
 | 
			
		||||
                      logsDetect[0][0].line +
 | 
			
		||||
                      "|" +
 | 
			
		||||
                      logsDetect[0][0].created_at +
 | 
			
		||||
                      "|[View](https://auto.danielvu.com/api/log?name=" +
 | 
			
		||||
                      fileName +
 | 
			
		||||
                      ")\n|...|**...**|...|...|...\n";
 | 
			
		||||
                    logsDetect[0]
 | 
			
		||||
                      .slice(logsDetect[0].length - 6, logsDetect[0].length - 1)
 | 
			
		||||
                      ?.map((log, index) => {
 | 
			
		||||
                        content =
 | 
			
		||||
                          content +
 | 
			
		||||
                          "|" +
 | 
			
		||||
                          (index + 1 + logsDetect[0].length - 6) +
 | 
			
		||||
                          "|**" +
 | 
			
		||||
                          log.detected_content +
 | 
			
		||||
                          "**|" +
 | 
			
		||||
                          log.line +
 | 
			
		||||
                          "|" +
 | 
			
		||||
                          log.created_at +
 | 
			
		||||
                          "|[View](https://auto.danielvu.com/api/log?name=" +
 | 
			
		||||
                          fileName +
 | 
			
		||||
                          ")\n";
 | 
			
		||||
                      });
 | 
			
		||||
                  } else {
 | 
			
		||||
                    logsDetect[0].map((log, index) => {
 | 
			
		||||
                      content =
 | 
			
		||||
                        content +
 | 
			
		||||
                        "|" +
 | 
			
		||||
                        (index + 1) +
 | 
			
		||||
                        "|**" +
 | 
			
		||||
                        log.detected_content +
 | 
			
		||||
                        "**|" +
 | 
			
		||||
                        log.line +
 | 
			
		||||
                        "|" +
 | 
			
		||||
                        log.created_at +
 | 
			
		||||
                        "|[View](https://auto.danielvu.com/api/log?name=" +
 | 
			
		||||
                        fileName +
 | 
			
		||||
                        ")\n";
 | 
			
		||||
                    });
 | 
			
		||||
                  }
 | 
			
		||||
                  // setTimeout(() => {
 | 
			
		||||
                    sendMessToZulip("stream", "Result test - auto.nswteam.net", "Log Alert",content)
 | 
			
		||||
                  sendMessToZulip(
 | 
			
		||||
                    "stream",
 | 
			
		||||
                    "Result test - auto.nswteam.net",
 | 
			
		||||
                    "Log Alert",
 | 
			
		||||
                    content
 | 
			
		||||
                  );
 | 
			
		||||
                  // }, 3000);
 | 
			
		||||
                }
 | 
			
		||||
              }, 3000);
 | 
			
		||||
| 
						 | 
				
			
			@ -151,8 +204,6 @@ export async function runtimeCheckLogs(folderPath) {
 | 
			
		|||
          // }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
  } catch (error) {
 | 
			
		||||
    console.log(error);
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										106
									
								
								start/routes.ts
								
								
								
								
							
							
						
						
									
										106
									
								
								start/routes.ts
								
								
								
								
							| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
import axios from "axios";
 | 
			
		||||
/*
 | 
			
		||||
|--------------------------------------------------------------------------
 | 
			
		||||
| Routes
 | 
			
		||||
| 
						 | 
				
			
			@ -18,21 +19,100 @@
 | 
			
		|||
|
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
import Route from '@ioc:Adonis/Core/Route'
 | 
			
		||||
import LogDetectFile from 'App/Models/LogDetectFile'
 | 
			
		||||
import { runtimeCheckLogs } from 'App/utils/runtimeCheckLogs'
 | 
			
		||||
import Env from '@ioc:Adonis/Core/Env';
 | 
			
		||||
import Route from "@ioc:Adonis/Core/Route";
 | 
			
		||||
import LogDetectFile from "App/Models/LogDetectFile";
 | 
			
		||||
import { runtimeCheckLogs } from "App/utils/runtimeCheckLogs";
 | 
			
		||||
import Env from "@ioc:Adonis/Core/Env";
 | 
			
		||||
import KeyValue from "App/Models/KeyValue";
 | 
			
		||||
 | 
			
		||||
runtimeCheckLogs(Env.get("FOLDER_LOGS"))
 | 
			
		||||
runtimeCheckLogs(Env.get("FOLDER_LOGS"));
 | 
			
		||||
 | 
			
		||||
Route.get('/api/list', async () => {
 | 
			
		||||
  const a = await LogDetectFile.all()
 | 
			
		||||
Route.get("/api/list", async () => {
 | 
			
		||||
  const a = await LogDetectFile.all();
 | 
			
		||||
  // console.log("first")
 | 
			
		||||
  return a
 | 
			
		||||
})
 | 
			
		||||
  return a;
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
Route.post('/api/getIndexSerialNumber', "ErpsController.getIndexSerialNumber").middleware("checkToken")
 | 
			
		||||
Route.post('/api/getParagraph', "ErpsController.getParagraph").middleware("checkToken")
 | 
			
		||||
Route.post(
 | 
			
		||||
  "/api/getIndexSerialNumber",
 | 
			
		||||
  "ErpsController.getIndexSerialNumber"
 | 
			
		||||
).middleware("checkToken");
 | 
			
		||||
Route.post("/api/getParagraph", "ErpsController.getParagraph").middleware(
 | 
			
		||||
  "checkToken"
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
Route.post('/api/account/createUser', "UsersController.create")
 | 
			
		||||
Route.post('/api/account/checkLogin', "UsersController.checkLogin")
 | 
			
		||||
Route.post("/api/account/createUser", "UsersController.create");
 | 
			
		||||
Route.post("/api/account/checkLogin", "UsersController.checkLogin");
 | 
			
		||||
 | 
			
		||||
Route.get("/api/log/showLog/:name?", async ({ request, response }) => {
 | 
			
		||||
  const content = await axios.get(
 | 
			
		||||
    "http://192.168.5.7:8080/" + request.params().name
 | 
			
		||||
  );
 | 
			
		||||
  let listKeyValues = await KeyValue.all();
 | 
			
		||||
  // console.log(listKeyValues)
 | 
			
		||||
  let data = content.data.split("\n");
 | 
			
		||||
 | 
			
		||||
  data.map((line, index) => {
 | 
			
		||||
    // console.log(line)
 | 
			
		||||
    data[index] =
 | 
			
		||||
      "<span style='background-color:pink;'>" + (index + 1) + "</span>" + line;
 | 
			
		||||
    listKeyValues
 | 
			
		||||
      .map((obj) => obj.$original.value)
 | 
			
		||||
      .map(async (value) => {
 | 
			
		||||
        if (line.search(value) !== -1) {
 | 
			
		||||
          let keyWord = "";
 | 
			
		||||
          line.split(" ").map((word) => {
 | 
			
		||||
            if (word.toLocaleLowerCase().includes(value)) {
 | 
			
		||||
              keyWord = keyWord + word;
 | 
			
		||||
            }
 | 
			
		||||
          });
 | 
			
		||||
          
 | 
			
		||||
          if (value.length === keyWord.length) {
 | 
			
		||||
            data[index] =
 | 
			
		||||
            "<span style='background-color:pink;'>" +
 | 
			
		||||
            (index + 1) +
 | 
			
		||||
            "</span>" +
 | 
			
		||||
            line.slice(0, line.search(value)) +
 | 
			
		||||
            "<span style='background-color:yellow;'>" +
 | 
			
		||||
            value +
 | 
			
		||||
            "</span>" +
 | 
			
		||||
            line.slice(line.search(value) + value.length);
 | 
			
		||||
          }
 | 
			
		||||
          
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
  });
 | 
			
		||||
  // console.log(data)
 | 
			
		||||
  response.send(
 | 
			
		||||
    "<html>\
 | 
			
		||||
    <body>\
 | 
			
		||||
    <div style='width:100%;height:100%;word-wrap:break-word;white-space:pre;overflow: auto;font-family: monospace;text-rendering: auto;\
 | 
			
		||||
    color: fieldtext;\
 | 
			
		||||
    letter-spacing: normal;\
 | 
			
		||||
    word-spacing: normal;\
 | 
			
		||||
    line-height: normal;\
 | 
			
		||||
    text-transform: none;\
 | 
			
		||||
    text-indent: 0px;\
 | 
			
		||||
    text-shadow: none;\
 | 
			
		||||
    display: inline-block;\
 | 
			
		||||
    text-align: start;\
 | 
			
		||||
    appearance: auto;\
 | 
			
		||||
    -webkit-rtl-ordering: logical;\
 | 
			
		||||
    resize: auto;\
 | 
			
		||||
    cursor: text;\
 | 
			
		||||
    background-color: field;\
 | 
			
		||||
    column-count: initial !important;\
 | 
			
		||||
    writing-mode: horizontal-tb !important;\
 | 
			
		||||
    box-sizing: border-box;\
 | 
			
		||||
    margin: 0em;\
 | 
			
		||||
    border-width: 1px;\
 | 
			
		||||
    border-style: solid;\
 | 
			
		||||
    border-color: -internal-light-dark(rgb(118, 118, 118), rgb(133, 133, 133));\
 | 
			
		||||
    border-image: initial;\
 | 
			
		||||
    padding: 2px;'>" +
 | 
			
		||||
      data.join("\n") +
 | 
			
		||||
      "</div>\
 | 
			
		||||
    </body>\
 | 
			
		||||
    </html>"
 | 
			
		||||
  );
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue