Rust中如何使用log4rs日誌?
使用 log4rs 進行高階日誌記錄:輪換、保留、模式、多個記錄器?
我們的任務是為 rust 中的交易機器人實現日誌記錄。我們有幾種交易策略,並希望有單獨的記錄器和單獨的檔案。我們希望對檔案進行輪換,以便當檔案大小達到特定點時,會建立一個新檔案。此外,我們希望將舊檔案壓縮然後刪除以節省記憶體並避免記憶體不足。
為了實現這一切,我們將使用log和log4rs crates。Log4rs 理解我們需要的一切。我們只需要設定適當的配置。此配置可以透過以下兩種方式之一完成:透過YAML 檔案或以程式設計方式。
對於我們的任務,我們將選擇 YAML 檔案。如果您需要更多動態,使用庫實體和方法編寫等效程式碼非常簡單。我將在文章末尾分享我們案例的此類程式碼。
日誌輸出單獨的日誌檔案
要將我們的日誌訊息轉發到不同的檔案,我們必須定義單獨的記錄器並將每個記錄器繫結到特定的字串。日誌箱有多個宏,例如error!()、warn!()、info!()、debug!()和trace!()。
當您呼叫這樣的宏來記錄訊息時,該宏應該設定當前日誌事件的特定記錄器。預設情況下,宏檢查為呼叫此宏的當前模組設定的記錄器,然後宏將此記錄器繫結到當前日誌事件。
讓我們看一下示例以瞭解其含義。假設我們有一個名為test_crate的箱子。在這個箱子裡,我們有一個帶有函式func_in_test_module()的模組
mod test_module { use log::error; fn func_in_test_module() { error!("An error occurred!"); } } |
當我們呼叫error!()宏時,它會將記錄器設定為“test_crate::test_module”。如果我們用這樣的名稱定義我們的自定義記錄器,它將用於當前的日誌事件。
對於某些情況,這種方法可能是合適的,但對於其他情況,我們希望有更大的靈活性。因此,或者我們可以顯式地為log 宏提供目標值:
mod test_module { use log::error; fn func_in_test_module() { error!(target: "foo", "An error occurred!"); } } |
因此,我們應該使用名稱“foo”定義記錄器,它將繫結到當前日誌事件。
現在我們可以動態地決定為特定的日誌宏呼叫使用什麼記錄器,併為記錄器指定我們想要的任何名稱。
更多點選標題
相關文章
- estk/log4rs: 類似log4j的Rust日誌框架Rust框架
- 如何將rust日誌輸出到android終端RustAndroid
- 【Rust】使用日誌記錄利器flexi_loggerRustFlex
- Rust 實現日誌記錄功能Rust
- Node 中如何更好地打日誌
- 如何在 Linux 中管理日誌Linux
- 如何在程式碼中打日誌
- Rust中獲得CPU核數與列印日誌到控制檯?Rust
- Rust 日誌系統實踐總結Rust
- 在Linux中,如何使用logrotate命令管理日誌檔案?Linuxlogrotate
- 在Linux中,如何使用ELK進行日誌管理和分析?Linux
- NAS中如何檢視日誌記錄?
- 如何使用 Tig 瀏覽 Git 日誌Git
- 如何清理日誌
- 中繼日誌中繼
- mysql之 日誌體系(錯誤日誌、查詢日誌、二進位制日誌、事務日誌、中繼日誌)MySql中繼
- struts 中怎樣將系統日誌與使用者日誌分離
- 如何在專案中記錄日誌資訊?
- 如何使用Journalctl檢視並操作Systemd日誌
- Spring Boot 2 中如何使用 Log4j2 記錄日誌Spring Boot
- 程式中的日誌
- Mybatis 中如何優雅的增強日誌功能?MyBatis
- 如何在MySQL中開啟慢查詢日誌?MySql
- 如何在Objective-C中列印日誌記錄Object
- 在Linux中,如何檢視系統日誌?Linux
- Rust中如何排序Vector?Rust排序
- .NetCore中的日誌(1)日誌元件解析NetCore元件
- 如何使用MySQL資料庫來分析Apache日誌?MySql資料庫Apache
- 如何使用 logrotate 命令保持日誌檔案更新logrotate
- 日誌服務之使用Nginx模式採集日誌Nginx模式
- 日誌分析如何演變
- 日誌到底該如何列印?
- 如何訪問Docker容器中的Spring Boot日誌DockerSpring Boot
- oracle中清空日誌組Oracle
- 開源!非凸Rust高效能日誌庫ftlogRust
- 日誌檔案和歸檔日誌檔案的關係以及如何切換日誌
- Go中使用Zap日誌庫與Lumberjack日誌切割Go
- Spring Boot日誌使用Spring Boot