」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > LogTape:適用於 JavaScript 的零依賴日誌記錄

LogTape:適用於 JavaScript 的零依賴日誌記錄

發佈於2024-09-01
瀏覽:720

LogTape: Zero-Dependency Logging for JavaScript That Just Works

嘿,開發者們! ?您是否厭倦了與複雜的日誌庫進行鬥爭,這些庫似乎比整個專案具有更多的依賴項?您是否夢想擁有一個既易於使用又強大的日誌記錄解決方案?好吧,拿起您最喜歡的飲料,放鬆一下,因為我將向您介紹 LogTape——這個日誌庫將使您的生活變得更加輕鬆!

什麼是 LogTape?

LogTape 是一個用於 JavaScript 和 TypeScript 的全新日誌庫,其設計時牢記一個目標:使日誌記錄在所有 JavaScript 環境中變得簡單、靈活且無麻煩。無論您是為 Deno、Node.js、Bun、邊緣函數還是瀏覽器建立應用程序,LogTape 都能滿足您的需求。

為什麼你應該關心?

讓我們面對現實吧,日誌記錄是每個項目都需要的東西之一,但它很少是節目中的明星。這就是 LogTape 的用武之地 - 它處理日誌記錄的所有細節,以便您可以專注於真正重要的事情:編寫出色的程式碼。

這就是 LogTape 值得在您的工具包中佔有一席之地的原因:

  1. 零依賴關係:沒錯,零。沒什麼。齊爾奇。 LogTape 有自己的兩隻腳,這意味著您不再需要依賴地獄!

  2. 運行時多樣性:在任何地方使用相同的日誌記錄程式碼。 Deno、Node.js、Bun、邊緣函數、瀏覽器 — LogTape 與它們都能很好地配合。

  3. 結構化日誌記錄:使用結構化資料記錄訊息,以便於解析和分析。

  4. 分層類別:使用分層類別系統組織日誌,讓您可以對日誌詳細程度進行細微控制。

  5. 範本文字支援:為日誌訊息使用熟悉的範本文字。這很簡單:

     logger.info`Hello, ${username}! Welcome to LogTape.`;
    
  6. Dead Simple Sinks:想要新增您自己的自訂日誌目的地? LogTape 讓一切變得輕而易舉!

顯示代碼!

好吧,讓我們來看看 LogTape 的實際應用。首先,您需要進行設定(不用擔心,這非常簡單):

import { configure, getConsoleSink } from "@logtape/logtape";

await configure({
  sinks: { console: getConsoleSink() },
  filters: {},
  loggers: [
    { category: "my-awesome-app", level: "debug", sinks: ["console"] }
  ]
});

現在,讓我們進行一些日誌記錄:

import { getLogger } from "@logtape/logtape";

const logger = getLogger(["my-awesome-app", "user-service"]);

export function greetUser(username: string): void {
  logger.debug`Preparing to greet ${username}`;
  logger.info`Hello, ${username}! Welcome to our awesome app.`;
}

就是這樣!乾淨、簡單且強大的日誌記錄觸手可及。

但等等,還有更多!

LogTape 不只是基本日誌記錄。它充滿了使其脫穎而出的功能:

  • 靈活的接收器系統:登入控制台、文件,甚至建立您自己的自訂接收器。
  • 旋轉檔案日誌:自動旋轉日誌檔案以保持整潔。
  • 細粒度過濾:精確控制記錄的內容和位置。
  • 著重效能:當您需要記錄昂貴的計算時的惰性評估選項。

入門

準備好嘗試 LogTape 了嗎?這很簡單:

對於 Deno:

deno add @logtape/logtape

對於 Node.js:

npm add @logtape/logtape

髮髻:

bun add @logtape/logtape

總結

LogTape 是您一直在等待的日誌記錄庫 — 足夠簡單,適合快速專案;足夠強大,適合複雜應用程式;足夠靈活,可以根據您的需求進行成長。是時候告別頭痛的日誌記錄,向 LogTape 致敬了!

嘗試一下,讓我們知道您的想法。祝大家伐木愉快! ??


您試過 LogTape 了嗎?您最喜歡的功能是什麼?請在下面的評論中告訴我們!

版本聲明 本文轉載於:https://dev.to/hongminhee/logtape-zero-dependency-logging-for-javascript-that-just-works-4985?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求模擬瀏覽器行為,以及偽造的用戶代理提供了一個用戶 - 代理標頭一個有效方法是提供有效的用戶式header,以提供有效的用戶 - 設置,該標題可以通過browser和Acterner Systems the equestersystermery和操作系統。通過模仿像Chro...
    程式設計 發佈於2025-07-17
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,將常數列添加到Spark DataFrame,該列具有適用於所有行的任意值的Spark DataFrame,可以通過多種方式實現。使用文字值(SPARK 1.3)在嘗試提供直接值時,用於此問題時,旨在為此目的的column方法可能會導致錯誤。 df.withCo...
    程式設計 發佈於2025-07-17
  • 同實例無需轉儲複製MySQL數據庫方法
    同實例無需轉儲複製MySQL數據庫方法
    在同一實例上複製一個MySQL數據庫而無需轉儲在同一mySQL實例上複製數據庫,而無需創建InterMediate sqql script。以下方法為傳統的轉儲和IMPORT過程提供了更簡單的替代方法。 直接管道數據 MySQL手動概述了一種允許將mysqldump直接輸出到MySQL cli...
    程式設計 發佈於2025-07-17
  • 為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    為什麼不````''{margin:0; }`始終刪除CSS中的最高邊距?
    在CSS 問題:不正確的代碼: 全球範圍將所有餘量重置為零,如提供的代碼所建議的,可能會導致意外的副作用。解決特定的保證金問題是更建議的。 例如,在提供的示例中,將以下代碼添加到CSS中,將解決餘量問題: body H1 { 保證金頂:-40px; } 此方法更精確,避免了由全局保證金重置...
    程式設計 發佈於2025-07-17
  • 如何高效地在一個事務中插入數據到多個MySQL表?
    如何高效地在一個事務中插入數據到多個MySQL表?
    mySQL插入到多個表中,該數據可能會產生意外的結果。雖然似乎有多個查詢可以解決問題,但將從用戶表的自動信息ID與配置文件表的手動用戶ID相關聯提出了挑戰。 使用Transactions和last_insert_id() 插入用戶(用戶名,密碼)值('test','tes...
    程式設計 發佈於2025-07-17
  • 為什麼不使用CSS`content'屬性顯示圖像?
    為什麼不使用CSS`content'屬性顯示圖像?
    在Firefox extemers屬性為某些圖像很大,&& && && &&華倍華倍[華氏華倍華氏度]很少見,卻是某些瀏覽屬性很少,尤其是特定於Firefox的某些瀏覽器未能顯示圖像時未能顯示圖像時遇到了一個問題。這可以在提供的CSS類中看到:。 googlepic { 內容:url(&...
    程式設計 發佈於2025-07-17
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-07-17
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    程式設計 發佈於2025-07-17
  • PHP陣列鍵值異常:了解07和08的好奇情況
    PHP陣列鍵值異常:了解07和08的好奇情況
    PHP數組鍵值問題,使用07&08 在給定數月的數組中,鍵值07和08呈現令人困惑的行為時,就會出現一個不尋常的問題。運行print_r($月份)返回意外結果:鍵“ 07”丟失,而鍵“ 08”分配給了9月的值。 此問題源於PHP對領先零的解釋。當一個數字帶有0(例如07或08)的前綴時,PHP...
    程式設計 發佈於2025-07-17
  • 在Ubuntu/linux上安裝mysql-python時,如何修復\“ mysql_config \”錯誤?
    在Ubuntu/linux上安裝mysql-python時,如何修復\“ mysql_config \”錯誤?
    mysql-python安裝錯誤:“ mysql_config找不到”“ 由於缺少MySQL開發庫而出現此錯誤。解決此問題,建議在Ubuntu上使用該分發的存儲庫。使用以下命令安裝Python-MysqldB: sudo apt-get安裝python-mysqldb sudo pip in...
    程式設計 發佈於2025-07-17
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-07-17
  • input: Why Does "Warning: mysqli_query() expects parameter 1 to be mysqli, resource given" Error Occur and How to Fix It?

output: 解決“Warning: mysqli_query() 參數應為 mysqli 而非 resource”錯誤的解析與修復方法
    input: Why Does "Warning: mysqli_query() expects parameter 1 to be mysqli, resource given" Error Occur and How to Fix It? output: 解決“Warning: mysqli_query() 參數應為 mysqli 而非 resource”錯誤的解析與修復方法
    mysqli_query()期望參數1是mysqli,resource給定的,嘗試使用mysql Query進行執行MySQLI_QUERY_QUERY formation,be be yessqli:sqli:sqli:sqli:sqli:sqli:sqli: mysqli,給定的資源“可能發...
    程式設計 發佈於2025-07-17
  • Java中假喚醒真的會發生嗎?
    Java中假喚醒真的會發生嗎?
    在Java中的浪費喚醒:真實性或神話? 在Java同步中偽裝喚醒的概念已經是討論的主題。儘管存在這種行為的潛力,但問題仍然存在:它們實際上是在實踐中發生的嗎? Linux的喚醒機制根據Wikipedia關於偽造喚醒的文章,linux實現了pthread_cond_wait()功能的Linux實現,...
    程式設計 發佈於2025-07-17
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-07-17
  • 在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在JTable中維護jtable單元格渲染後,在JTable中,在JTable中實現自定義單元格渲染和編輯功能可以增強用戶體驗。但是,至關重要的是要確保即使在編輯操作後也保留所需的格式。 在設置用於格式化“價格”列的“價格”列,用戶遇到的數字格式丟失的“價格”列的“價格”之後,問題在設置自定義單元...
    程式設計 發佈於2025-07-17

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3