乙個程序安全的日誌類, Linux實現

2021-08-23 11:51:45 字數 2314 閱讀 1587

專案中需要分類日誌功能,且日誌由多個程序產生,所以寫了這個類。

#include"generic.h"

enumlog_type

;public:

static

char*lpszfmt,...);

static

char*lpszfmt,...);

static

char*lpszfmt,...);

static

char*lpszfmt,...);

private:

staticsem_t*s_plogfilesem;

static

char*lpsztext);

};以下是它的實現/**

*createdon:jan1,2009

*author:root

*/#include"csystemhelper.h"

#definelog_sem_name"logfilesem"

if(s_plogfilesem==null)

}if(s_plogfilesem!=null)

}char*lpsztext)

; intnret=readlink("/proc/self/exe",szbuffer,sizeof(szbuffer));

if(nret<=0||nret>=path_max)

return;

stringstrtemp(szbuffer);

stringstrdir=strtemp.substr(0,strtemp.rfind('/')+1);

stringstrexe=strtemp.substr(strtemp.rfind('/')+1);

time_tulnow=;

time(&ulnow);

tm*pnow=localtime(&ulnow);

memset(szbuffer,0,sizeof(szbuffer));

sprintf(szbuffer,"%slog/%04d/%04d-%02d/"

,strdir.c_str()

,1900+pnow->tm_year

,1900+pnow->tm_year

,1+pnow->tm_mon

);csystemhelper::createdirectory(szbuffer);

sprintf(szbuffer,"%slog/%04d/%04d-%02d/%04d-%02d-%02d.log"

,strdir.c_str()

,1900+pnow->tm_year

,1900+pnow->tm_year

,1+pnow->tm_mon

,1900+pnow->tm_year

,1+pnow->tm_mon

,pnow->tm_mday

);sem_wait(s_plogfilesem);

; sprintf(szformated,"\r\n%02d[%02d:%02d:%02dpid=%05dtid=%05ldexe=%-15s]%s"

,emtype

,pnow->tm_hour

,pnow->tm_min

,pnow->tm_sec

,getpid()

,(long)syscall(sys_gettid)

,strexe.c_str()

,lpsztext

);streamstream.close();}}

sem_post(s_plogfilesem);

}char*lpszfmt,...)

; vsprintf(szbuffer,lpszfmt,arg);

va_end(arg);

}char*lpszfmt,...)

; vsprintf(szbuffer,lpszfmt,arg);

va_end(arg);

}char*lpszfmt,...)

; vsprintf(szbuffer,lpszfmt,arg);

va_end(arg);

}char*lpszfmt,...)

; vsprintf(szbuffer,lpszfmt,arg);

va_end(arg);

}使用起來很簡單,將類加入到工程,然後在需要的地方包含此類的標頭檔案,然後直接呼叫靜態方法。這裡用到了乙個輔助類的函式 csystemhelper::createdirectory,它的實現如下:

voidcsystemhelper::createdirectory(const

char*lpszdir)

}

乙個簡單的日誌類

放乙個以前做的,一直用著的日誌類。比較短,也不用碼很多字去說明,如下 1 2 日誌類 log.cs34 5 用法 6 ningtao.log mylog new ningtao.log 日誌名稱 7 mylog.addlog 日誌資訊 8 新增一條日誌時 9 目錄結構 日誌名稱 年月 日.log 1...

乙個操作日誌檔案的類

在軟體中常用到日誌檔案,這是我在專案中用到的乙個操作日誌檔案的類。imports system imports system.io public class classlogfile inherits system.object public shared logfilename as string...

乙個簡單的日誌封裝類

記錄乙個自己封裝的日誌類,不完善的地方,望指點。其中,包含寫檔案和輸出到終點,定義日誌等級,定義日誌儲存檔案時間間隔,日誌檔案個數等 並統一日誌輸出格式 檔名,方法名等資訊 import logging from logging import handlers class logger object...