C++linux下使用clog和重定向實現寫日志

C++linux下使用clog和重定向實現寫日志

  • 實現文件
  • 基本功能
  • 測試
  • 編譯
  • 運行
  • 額外知識點

實現文件

LogUtil.hpp

/**
* 通用日志實現
* lsl
* 2024-06-04
*/#ifndef LOGUTIL_HPP
#define LOGUTIL_HPP
#include<iostream>
#include <time.h>
#include <cstring>
#define __FILENAME__ (strrchr(__FILE__, '/') ? (strrchr(__FILE__, '/') + 1):__FILE__)
char* __DATETIME__(){ char format[32]="%Y-%m-%d %X";time_t tt = time(NULL);struct tm ltm;localtime_r(&tt, &ltm);char*s=new char[32];strftime(s, 32, format, &ltm);return s; };
#define LogInfo(msg) (std::clog<<"["<<__DATETIME__()<<"][INFO]["<<__FILENAME__<<"]["<<__FUNCTION__<<":"<<__LINE__<<"] "<<msg<<std::endl)
#define LogWarn(msg) (std::clog<<"["<<__DATETIME__()<<"][WARN]["<<__FILENAME__<<"]["<<__FUNCTION__<<":"<<__LINE__<<"] "<<msg<<std::endl)
#define LogError(msg) (std::clog<<"["<<__DATETIME__()<<"][ERROR]["<<__FILENAME__<<"]["<<__FUNCTION__<<":"<<__LINE__<<"] "<<msg<<std::endl)
#endif // LOGUTIL_HPP

基本功能

三種日志類型,INFO,WARN,ERROR
日志攜帶日期時間
日志攜帶文件名、函數名和日志所在行。

測試

prog1.cc

#include<LogUtil.hpp>
int main(){LogInfo("測試"<<11<<"hahah ");LogWarn("測試2"<<11<<"hahah ");LogError("測試3"<<11<<"hahah ");return 0;
}

編譯

g++ prog1.cc LogUtil.hpp -I./ -o logutil

運行

./logutil &>log_20240604.log
[root@localhost myPractice]# ./logutil &>log_20240604.log
[root@localhost myPractice]# cat log_20240604.log 
[2024-06-04 18:02:01][INFO][prog1.cc][main:3] 測試11hahah 
[2024-06-04 18:02:01][WARN][prog1.cc][main:4] 測試211hahah 
[2024-06-04 18:02:01][ERROR][prog1.cc][main:5] 測試311hahah 

額外知識點

  1. main函數是int類型,return 0說明程序正常退出。 通過命令 echo &? 能查看到退出情況。
  2. 重定向 < 輸入,對應cin, 標準輸出1>,對應cout, 錯誤輸出2>,對應cerr,clog。
  3. 1>>tt.log 追加輸出, 2>>tt.log, &>>tt.log 所有追加輸出到一個文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22302.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22302.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22302.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LED驅動IC:HC2161,升壓型LED恒流驅動ic,供應LED燈杯單節電池以上供電的LED燈串平板顯示LED背光大功率LED照明

LED驅動IC&#xff1a; HC2161:升壓型LED恒流驅動ic 概述&#xff1a;HC2161是一款高效率、高精度的升 壓型大功率LED恒流驅動控制芯片。 HC2161內置高精度誤差放大器&#xff0c;固 定關斷時間控制電路&#xff0c;恒流驅動電路等&#xff0c; 特別適合大功率、多個高亮…

七年

七年 我&#xff0c;回來了&#xff0c;七年后。回看之前的文章&#xff0c;當初的情意濃濃&#xff0c;患得患失&#xff0c;真的是恍如隔世。 經歷了重重波折&#xff0c;父母反對&#xff0c;奔赴廣州&#xff0c;云南危機&#xff0c;房名危機&#xff0c;都沒把我們拆散…

鴻蒙開發接口定制管理:【@ohos.configPolicy (配置策略)】

配置策略 配置策略提供按預先定義的定制配置層級獲取對應定制配置目錄和文件路徑的能力。 說明&#xff1a; 本模塊首批接口從API version 8開始支持。后續版本的新增接口&#xff0c;采用上角標單獨標記接口的起始版本。 本模塊接口均為系統接口&#xff0c;三方應用不支持調…

Kaggle平臺進行Python版本降級

前言 最近在復現語音合成模型VITS&#xff0c;由于目前沒有算力故去Kaggle白嫖運算資源。 VITS的運行環境要求如下 Cython0.29.21 librosa0.8.0 matplotlib3.3.1 numpy1.18.5 phonemizer2.2.1 scipy1.5.2 tensorboard2.3.0 torch1.6.0 torchvision0.7.0 Unidecode1.1.1截至2…

21.過擬合和欠擬合示例

1. 背景介紹 在機器學習和深度學習中&#xff0c;過擬合和欠擬合是兩個非常重要的概念。過擬合指的是模型在訓練數據上表現很好&#xff0c;但在新的測試數據上效果變差的情況。欠擬合則是指模型無法很好地擬合訓練數據的情況。這兩種情況都會導致模型無法很好地泛化&#xff…

視頻號小店,常見的違規條例!98%的商家必犯的違規細節!

哈嘍~我是電商月月 做電商&#xff0c;不管哪個平臺都有屬于自己的規則條例&#xff0c;這些違規細節&#xff0c;一定要提前了解 所以今天&#xff0c;月月就給大家分享一下&#xff0c;做視頻號小店的話&#xff0c;有哪些常見的違規細節 這里我們分三點講解 一&#xff…

【分享】兩種方法禁止修改Word文檔

對于比較重要的Word文件&#xff0c;不想被隨意編輯修改&#xff0c;可以試試以下兩個方法&#xff0c;不清楚的小伙伴&#xff0c;一起來看看吧&#xff01; 方法1&#xff1a;設置“只讀方式” 我們可以給Word文檔設置以“只讀方式”打開&#xff0c;這樣就算編輯修改了文檔…

如何通過SD-WAN提升企業溝通效率

在數字化飛速發展的今天&#xff0c;企業對大數據和實時商業數據傳輸的需求日益增長。傳統的專線連接技術已無法滿足企業對快速部署商業應用和高效網絡連接的需求。在這種背景下&#xff0c;SD-WAN成為提升企業網絡溝通效率的關鍵技術。 SD-WAN的靈活部署模式 SD-WAN提供了高度…

6月軟考新通知:24下集成大概率是中級蕞簡單的一門

2024下半年軟考6月新通知&#xff1a; 一、24下軟考考試時間安排&#xff1a; 24下半年軟考報名時間&#xff1a;8月19日-9月15日 24下半年軟考考試時間&#xff1a;11月9-12日 24下半年軟考成績查詢&#xff1a;12月中&#xff08;預計&#xff09; 二、考情分析 24上軟考…

09_JavaWeb會話

1.會話 HTTP是一種無狀態協議&#xff1b; HTTP協議對于發送過請求或者響應都不做持久化處理具體來說就是客戶端發送請求&#xff0c;服務器接收請求&#xff0c;但是服務器自身不會記錄每一條請求都是由哪一個客戶端發出的&#xff1b; 會話管理是通過Cookie和Session配合解…

【排序】插入排序,希爾排序

前面我們講述了冒泡排序和選擇排序&#xff0c;我們本章講的排序方法是插入排序&#xff0c;插入排序是希爾排序實現的基礎函數&#xff0c;大家一定要好好理解插入排序的邏輯&#xff0c;這樣才能在后面學習希爾排序的時候&#xff0c;更容易的去理解&#xff0c;我們直接開始…

關于無法通過腳本啟動Kafka集群的解決辦法

啟動Kafka集群時&#xff0c;需要在每臺個節點上啟動啟動服務&#xff0c;比較麻煩&#xff0c;通過寫了以下腳本來進行啟停&#xff1b;發現能正常使用停止功能&#xff0c;不能正常啟動Kafka&#xff1b; Kafka啟停腳本&#xff1a; ## 以防不能通過shell腳本啟動Kafka服務…

富格林:揭露黑幕平臺保障安全

富格林指出&#xff0c;很多黑幕平臺都會將自己包裝得光鮮亮麗后&#xff0c;再出來誘惑投資者&#xff0c;使得投資者資金安全得不到保障&#xff0c;有苦說不出。富格林表示&#xff0c;黑幕平臺的套路其實是非常常見的&#xff0c;只要投資者熟知并能夠分辨出&#xff0c;就…

C盤擴容——只能刪除C盤右邊的磁盤對C盤進行擴展

winR彈出命令框 輸入&#xff1a;compmgmt.msc 進入磁盤管理頁面 注意&#xff1a;被刪除盤如果有重要數據信息&#xff0c;請備份。 或者刪除之前轉移至其他盤&#xff0c;否則刪除之后&#xff0c;則無法找回。 尤其是安裝的軟件。 規范安裝目錄十分重要。 將C盤右邊的磁盤&a…

最全 Inno Setup 教程-[FILE] Flag參數

【1】此參數是一個附加選項的集合。可以使用空格將多個選項分隔開。 【2】支持以下選項&#xff1a; 32位 當在“Source”和“DestDir”參數中使用{sys}常量時&#xff0c;將該常量映射到32位系統目錄。將“regserver”和“regtypelib”標志設置為將文件視為32位&#xff0c;…

安防綜合管理系統EasyCVR視頻匯聚平臺GA/T 1400協議中的關鍵消息交互示例

在當今的信息化時代&#xff0c;公共安全防范日益成為保障社會和諧穩定的關鍵。視頻監控系統作為現代安全防范的重要手段&#xff0c;正不斷在公安、交通、城市管理等領域發揮著越來越重要的作用。而GA/T 1400協議視圖庫&#xff0c;作為公安視頻圖像信息應用系統的標準&#x…

Vue3 子組件訪問父組件的方法 - 父組件訪問子組件的屬性或方法 - 子組件修改父組件的值

一。子組件訪問父組件的方法 //父組件 <DialogEditing close-dialog"handleClose" /> const handleClose () > {};//子組件 const emit defineEmits(["closeDialog"]); const close () > {emit("closeDialog"); // 使用 };二。父…

健身日記之倒立俯臥撐學習——起始日2024.6.4

文章目錄 前言 自我介紹 昔日計劃 新目標計劃 瓶頸突破嘗試 參考視頻及文章 前言 有輕微健身基礎&#xff0c;正式接觸街健五大神技&#xff0c;立志在兩年內解鎖全部&#xff0c;將有機會的進行日常訓練和目標肌群鍛煉&#xff0c;這里向大家展示我的計劃和安排&#xf…

opencv-python(五)

opencv的顏色通道中順序是B&#xff0c;G&#xff0c;R。 圖像屬性 import cv2img cv2.imread(jk.jpg) print(fshape{img.shape}) print(fsize{img.size}) print(fdtype{img.dtype}) shape&#xff1a;圖像像素的行&#xff0c;列&#xff0c;通道 size&#xff1a;行數 X …

YonSuite收款通,助力企業618更快收款

隨著電商節日“618”的臨近&#xff0c;各大企業紛紛摩拳擦掌&#xff0c;準備在這場年中大促中大展身手。然而&#xff0c;隨著銷售額的激增&#xff0c;收款管理問題也愈發凸顯&#xff0c;成為制約企業快速發展的重要瓶頸。在這個關鍵時刻&#xff0c;YonSuite收款通憑借其卓…