Saya teruja untuk mengumumkan keluaran LogTape 0.7.0, yang memperkenalkan konteks tersirat—ciri baharu yang berkuasa yang menjadikannya lebih mudah berbanding sebelum ini untuk menambah maklumat kontekstual pada log anda di seluruh anda keseluruhan aplikasi.
Apakah konteks tersirat?
Bayangkan anda mengendalikan permintaan HTTP dalam aplikasi anda. Anda mahu setiap mesej log yang dijana semasa pemprosesan permintaan menyertakan ID permintaan, tidak kira di mana dalam pangkalan kod anda log dibuat. Sebelum konteks tersirat, anda perlu:
- Haruskan ID permintaan melalui setiap panggilan fungsi
- Buat pembalak baharu dengan konteks untuk setiap modul
- Atau gunakan pembolehubah global (yang mempunyai masalah mereka sendiri)
Dengan konteks tersirat, anda kini boleh menetapkan konteks pada permulaan pengendali permintaan anda dan setiap mesej log dalam konteks pelaksanaan itu akan menyertakan maklumat tersebut secara automatik. Berikut ialah contoh mudah:
function handleRequest(requestId: string) { withContext({ requestId }, () => { // Any log message in this function or any function it calls // will automatically include the requestId processRequest(); }); } function processRequest() { // Note that we don't need to pass the requestId explicitly getLogger("processor").info( "Processing request: {requestId}" ); }
Bagaimana ia berfungsi?
Konteks tersirat menggunakan mekanisme storan konteks-tempatan masa jalan yang mendasari (seperti AsyncLocalStorage Node.js) untuk mengekalkan maklumat kontekstual sepanjang pelaksanaan kod anda. Ini bermakna konteks diselenggara dengan betul walaupun merentasi operasi tak segerak.
Untuk mendayakan konteks tersirat dalam aplikasi anda, anda perlu mengkonfigurasi LogTape dengan storan konteks setempat:
import { AsyncLocalStorage } from "node:async_hooks"; import { configure } from "@logtape/logtape"; await configure({ // ... other settings ... contextLocalStorage: new AsyncLocalStorage(), });
Konteks dan keutamaan bersarang
Salah satu ciri hebat konteks tersirat ialah ia boleh bersarang. Apabila anda menyusun konteks, konteks dalaman mewarisi dan boleh mengatasi nilai daripada konteks luar:
function handleRequest(requestId: string) { withContext({ requestId, stage: "request" }, () => { // stage is "request" here processUser(1234); }); } function processUser(userId: number) { withContext({ userId, stage: "user" }, () => { // stage is "user" here, but requestId is still available getLogger("processor").info( "Processing user: {userId} for request: {requestId}" ); }); }
Apabila ia datang untuk menyelesaikan nilai konteks, LogTape mengikut urutan keutamaan yang jelas:
- Sifat eksplisit dalam mesej log mengambil keutamaan tertinggi
- Set konteks eksplisit melalui Logger.with() mengambil keutamaan kedua
- Set konteks tersirat melalui withContext() mengambil keutamaan paling rendah
Sokongan masa jalan
Sehingga Oktober 2024, konteks tersirat disokong dalam:
- Node.js
- Deno
- Bun
Pelayar web belum lagi menyokong konteks tersirat, kerana mereka menunggu pelaksanaan cadangan Konteks Async TC39.
Kes guna
Konteks tersirat amat berharga untuk:
- Penjejakan Permintaan: Tambahkan ID permintaan, ID pengguna atau ID sesi pada semua log dalam permintaan
- Pemantauan Transaksi: Jejaki ID transaksi merentas berbilang operasi
- Konteks Ralat: Pastikan log ralat sentiasa mempunyai maklumat kontekstual yang berkaitan
- Pemantauan Prestasi: Tambahkan maklumat masa merentas berbilang operasi
- Konteks Penyewa: Dalam aplikasi berbilang penyewa, jejak maklumat penyewa merentas semua operasi
Amalan terbaik
Apabila menggunakan konteks tersirat, pertimbangkan amalan terbaik ini:
- Gunakan konteks tersirat untuk maklumat yang benar-benar dimiliki oleh keseluruhan konteks pelaksanaan
- Pastikan data konteks ringan—ingat ia dibawa sepanjang keseluruhan pelaksanaan
- Gunakan nama kunci yang bermakna dan konsisten merentas aplikasi anda
- Pertimbangkan untuk menggunakan TypeScript untuk memastikan ketekalan struktur konteks
- Dokumenkan struktur konteks yang dijangkakan untuk aplikasi anda
Panduan Migrasi
Jika anda sudah menggunakan LogTape, peningkatan untuk menggunakan konteks tersirat adalah mudah:
- Kemas kini kepada LogTape 0.7.0
- Tambahkan storan konteks-tempatan pada konfigurasi LogTape anda
- Kenal pasti tempat yang konteks diedarkan secara manual
- Ganti dengan panggilan withContext() pada sempadan yang sesuai
Kesimpulan
Konteks tersirat dalam LogTape 0.7.0 menyediakan cara yang berkesan untuk menambah maklumat kontekstual pada log anda tanpa mengacaukan kod anda atau menghantar konteks secara manual melalui timbunan panggilan anda. Ia amat berharga dalam perkhidmatan web, API dan aplikasi lain yang menjejaki konteks merentas operasi adalah penting.
Saya teruja untuk melihat cara anda akan menggunakan ciri ini untuk meningkatkan pengelogan dan kebolehmerhatian aplikasi anda. Cubalah dan beritahu saya pendapat anda!
Untuk mendapatkan maklumat lanjut, lihat dokumentasi lengkap tentang konteks tersirat.
Atas ialah kandungan terperinci Memperkenalkan konteks tersirat dalam LogTape .0. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Dreamweaver CS6
Alat pembangunan web visual

Dreamweaver Mac版
Alat pembangunan web visual