สวยขึ้นลบเสียงและปรับปรุงบันทึกการจำลอง Firebase Emulator ของคุณ
ฉันเป็นแฟนตัวยงของ Firebase และใช้ Emulator เพื่อการพัฒนาในท้องถิ่นอย่างกว้างขวางกับของเรา โซเชียลมีเดีย API– มีคุณสมบัติที่ยอดเยี่ยมมากมายของ emulator เช่นการจำลองฟังก์ชั่นคลาวด์, Firestore และแม้แต่ Pub/Sub หากคุณส่งออกบันทึก JSON ไปยังคอนโซลโดยใช้ console.logเอาต์พุตสามารถทนได้โดยเฉพาะอย่างยิ่งถ้าคุณจัดรูปแบบด้วย JSON.stringify({...}, null, "t")– อย่างไรก็ตามสิ่งต่าง ๆ ยุ่งเมื่อคุณใช้ Firebase’s ที่แนะนำ คนตัดไม้– คนบันทึกเป็นหลัก Google Cloud Loggerซึ่งช่วยให้คุณจัดโครงสร้างบันทึกและ JSON ของคุณเพื่อให้สามารถดูและค้นหาได้อย่างง่ายดายในแผงควบคุม Google Cloud
ในขณะที่เอาต์พุต Logger Firebase ดูดีในแผงควบคุม Google Cloud สิ่งที่ดูไม่ดีนักในเอาต์พุตเทอร์มินัลของเรา:

การเพิ่มบันทึกการจำลอง Firebase Emulator
เราต้องการอะไรกับบันทึกการจำลอง Firebase
- การจัดรูปแบบของวัตถุ JSON เมื่อใช้เครื่องบันทึก
- เอาต์พุตสีเพื่อให้เราสามารถเน้นข้อผิดพลาด
- ลบข้อมูลภายนอกที่เราอาจไม่สนใจเช่น “ฟังก์ชั่น: คุณกำลังเรียกใช้ฟังก์ชั่น emulator ในโหมดดีบั๊ก (พอร์ต = 9229) ซึ่งหมายความว่าฟังก์ชั่นจะดำเนินการตามลำดับมากกว่าในแบบคู่ขนาน”
เนื่องจาก Firebase ยังไม่“ ยังให้ความสามารถเหล่านี้เรามาสร้างการปรับปรุงของเราเอง
เราจะบันทึกเอาต์พุตของเครื่องจำลอง Firebase ไปยังไฟล์ตรวจสอบไฟล์สำหรับการเปลี่ยนแปลงประมวลผลการเปลี่ยนแปลง (รูปแบบ ฯลฯ ) และส่งออกข้อมูลที่ประมวลผลไปยังคอนโซล
- โคลน Firebase-Emulator-logging ที่เก็บ GitHub นี่คือแอป Node.js เรียกใช้ทั่วไป
npm set upในไดเรกทอรีโคลน - เริ่มต้น Firebase Emulator ตามปกติและส่งออกไปยังไฟล์ ตัวอย่างเช่น:
firebase emulators:begin > save.txtหรือnpm run serve > save.txt– - ย้อนกลับไปในไดเรกทอรีโคลนเรียกใช้แอพโหนดด้วย
node index.js --file {file location}– ตัวอย่างเช่น:node index.js --file ./save.txt - เพลิดเพลินไปกับบันทึกใหม่!

พารามิเตอร์บันทึกการบันทึก
มีตัวเลือกเล็กน้อยเมื่อเรียกใช้แอพโหนด คุณเคยเห็น – ไฟล์แล้ว แต่คุณยังสามารถตั้งค่าเอาท์พุทให้เงียบซึ่งหมายถึงเอาต์พุตระบบที่เริ่มต้นด้วย “ฟังก์ชั่น” หรือ “โฮสติ้ง” ถูกระงับและคุณสามารถปิดการจัดรูปแบบได้สวย
| พารามิเตอร์ | คำอธิบาย | ที่จำเป็น |
| -ไฟล์ | ไฟล์ต้นฉบับของบันทึก | ใช่ |
| -เงียบ | ยับยั้งการบันทึกระบบเช่น “ฟังก์ชั่น”, “โฮสติ้ง”, “การจัดเก็บ” และ “PubSub” | เลขที่ |
| -ตีความได้ | ปิดการจัดรูปแบบวัตถุ JSON ที่สวยงาม ค่าเริ่มต้น: จริง | เลขที่ |
เบื้องหลัง
หากคุณต้องการดูรหัสทั้งหมดมุ่งหน้าไปที่ คนอื่น ๆหรือนี่คือไฟล์ index.js:
import readline from "readline";
import TailFile from "@logdna/tail-file";
import colorizer from "json-colorizer";
const QUIET_STRING = ("capabilities", "internet hosting", "storage", "pubsub");
const quiet = course of.argv.indexOf("--quiet");
const prettyOff = course of.argv.indexOf("--pretty-off");
const fileIndex = course of.argv.indexOf("--file");
if (fileIndex <= -1 || !course of.argv(fileIndex + 1)) {
console.error(
"You appear to be lacking the --file argument. Please present a file to tail."
);
course of.exit(1);
}
const choices = {
fairly: prettyOff <= -1 ? true : false,
colours: { STRING_LITERAL: "white" },
};
async perform startTail() {
const tail = new TailFile(course of.argv(fileIndex + 1)).on(
"tail_error",
(err) => {
console.error("TailFile had an error!", err);
}
);
strive {
await tail.begin();
const linesplitter = readline.createInterface({
enter: tail,
});
linesplitter.on("line", (line) => {
if (
quiet &&
QUIET_STRING.some((str) =>
new RegExp(`(?<=^...)(.*)${str}`, "gm").check(line)
)
)
return;
let newLine = line;
if (newLine.startsWith(">") && newLine.endsWith("}")) {
const overrideOptions = { ...choices };
strive {
const json = JSON.parse(newLine.slice(3));
swap (json?.severity) {
case "INFO":
overrideOptions.colours.STRING_KEY = "blue";
overrideOptions.colours.BRACE = "blue";
break;
case "WARNING":
overrideOptions.colours.STRING_KEY = "yellow";
overrideOptions.colours.BRACE = "yellow";
break;
case "ERROR":
overrideOptions.colours.STRING_KEY = "crimson";
overrideOptions.colours.BRACE = "crimson";
break;
default:
break;
}
newLine = colorizer(newLine.slice(3), overrideOptions);
} catch (err) {
// ignore
}
}
console.log(newLine);
});
} catch (err) {
console.error("Can't begin. Does the file exist?", err);
}
}
startTail().catch((err) => {
course of.nextTick(() => {
throw err;
});
});
ใช้แพ็คเกจ NPM ภายนอกสองชุด: import TailFile from "@logdna/tail-file";
import colorizer from "json-colorizer";
ไฟล์หางเป็นแพ็คเกจที่ยอดเยี่ยมที่อนุญาตให้ “หาง” ของไฟล์-เมื่อใดก็ตามที่มีการเปลี่ยนแปลงเกิดขึ้นเหตุการณ์จะเกิดขึ้น JSON colorizer เป็นแพ็คเกจที่ช่วยให้คุณสามารถระบุองค์ประกอบของ JSON ที่ได้รับสี
เกี่ยวกับ Ayrshare
Ayrshare เป็น โซเชียลมีเดีย API ที่ช่วยให้คุณเผยแพร่โพสต์รับการวิเคราะห์จัดการความคิดเห็นและส่งข้อความโดยตรงบนเครือข่ายสังคมออนไลน์โดยตรงจากแพลตฟอร์มของคุณ เรียนรู้เพิ่มเติมใน เอกสาร API โซเชียลมีเดีย–