Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:如何遍历日志文件_Javascript - Fatal编程技术网

Javascript:如何遍历日志文件

Javascript:如何遍历日志文件,javascript,Javascript,我有一个.log文件,它只是一行对象,名为store\u data.log: {"name": "Fred", "id": 31323, "favorited": false} {"name": "Chris", "id": 33123, "favorited": true} {"name": "Mike", "id": 33223, "favorited": true} 有一个名为store_data.json的对应文件,其中包含日志文件路径: { "log_path": "/int

我有一个.log文件,它只是一行对象,名为
store\u data.log

{"name": "Fred", "id": 31323, "favorited": false}
{"name": "Chris", "id": 33123, "favorited": true}
{"name": "Mike", "id": 33223, "favorited": true}
有一个名为
store_data.json
的对应文件,其中包含日志文件路径:

{
    "log_path": "/intua/store_data.log"
} 
在我的JS文件中,我想创建一个函数,该函数采用路径并遍历日志信息,但我不确定从何处开始,因为日志文件的格式不是我知道如何使用的


<script>
var store_data_json_path = '/path/to/store_data.json'; //your store_data.json location

var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', store_data_json_path, false); //this will access the store_data.json data
xmlhttp.send();

var store_data_json = JSON.parse(xmlhttp.responseText);
var store_data_log_path;

store_data_log_path = store_data_json.log_path; //this will retrieve log_path from store_data.json

var xmlhttp2 = new XMLHttpRequest();
xmlhttp2.open('GET', store_data_log_path, false); //this will access the store_data.log data
xmlhttp2.send();

var store_data_log_text = "[" + xmlhttp2.responseText + "]"; //this will add brackets that will make your string a valid json format
store_data_log_text = store_data_log_text.replace(/}/g, "},"); //will replace all } with }, to make it a valid JSON
store_data_log_text = store_data_log_text.replace(/,([^,]*)$/,"$1"); //will remove the last instance of , to make it a valid json

var store_data_log = JSON.parse(store_data_log_text); //we will convert the string to JSON

for(i in store_data_log) { //we will iterate to store_data.log
  console.log(store_data_log[i].name);
  console.log(store_data_log[i].id);
  console.log(store_data_log[i].favorited);
}
</script>
var store_data_json_path='/path/to/store_data.json'//您的store_data.json位置 var xmlhttp=new XMLHttpRequest(); open('GET',store_data_json_path,false)//这将访问store_data.json数据 xmlhttp.send(); var store_data_json=json.parse(xmlhttp.responseText); var存储\数据\日志\路径; store_data_log_path=store_data_json.log_path//这将从store_data.json检索日志_路径 var xmlhttp2=新的XMLHttpRequest(); xmlhttp2.open('GET',store\u data\u log\u path,false)//这将访问store_data.log数据 xmlhttp2.send(); var store_data_log_text=“[”+xmlhttp2.responseText+“]”//这将添加括号,使字符串成为有效的json格式 store_data_log_text=store_data_log_text.replace(/}/g,“}”)//将所有}替换为},使其成为有效的JSON 存储数据日志文本=存储数据日志文本。替换(/,([^,]*)$/,“$1”)//将删除的最后一个实例,使其成为有效的json var store\u data\u log=JSON.parse(store\u data\u log\u text)//我们将把字符串转换为JSON 对于(i in-store_data_log){//我们将迭代存储_data.log console.log(store\u data\u log[i].name); console.log(存储\u数据\u日志[i].id); console.log(store\u data\u log[i].favorited); }
首先读取文件,用“\n”拆分,然后迭代分析它

const fs = require('fs');
const config = require('store_data.json'); // load config,

const logPath = config.log_path;

(async() => {
    const data = await fs.readFileSync(logPath, 'utf-8');
    const logs = data.split('\n');

    Array.from(logs).forEach(logString => {
        const log = JSON.parse(logString);
        console.log(log); // Your log here.
    })
})();

顺便说一句,如果您的日志文件很大,那么readline或stream会更好。

contents.split(/\r\n |\n/).forEach(itm=>console.log(JSON.parse(itm))
您是否使用node进行此操作?如果日志文件很大,则流式传输到
Readline
可能是一种很好的、内存友好的处理方法。@MarkMeyer否,只是同事告诉他,要创建一个函数,该函数采用json文件中的日志路径,然后迭代日志文件内容。它们相当小files@user10108817您是如何检索“/intua/store_data.log”的内容的?这也是我想要弄清楚的。他希望我将日志路径传递到来自json文件的函数中