導航:首頁 > 編程系統 > c在linux上列印日誌

c在linux上列印日誌

發布時間:2024-05-10 01:12:25

① 如何將linux伺服器上的日誌導出

導出方法有很多,這里推薦給你一個最方便的方法:

  1. 進入到日誌存放目錄,假設要導出的日誌文件名為 a.log

  2. 通過 ifconfig 命令獲取伺服器 ip

  3. 利用python的輔助工具監聽80埠,前提是有root許可權,命令為:

    python-mSimpleHTTPServer80
  4. 直接從伺服器ip的80埠下載 a.log 就行:如果本地是windows,通過瀏覽器訪問 http://server_ip/a.log 即可下載;如果本地是linux,通過命令行執行命令 wget http://server_ip/a.log 即可下載

② 濡備綍瀹炴椂鏌ョ湅linux涓嬬殑鏃ュ織

cat /var/log/*.log
濡傛灉鏃ュ織鍦ㄦ洿鏂幫紝濡備綍瀹炴椂鏌ョ湅 tail -f /var/log/messages
榪樺彲浠ヤ嬌鐢 watch -d -n 1 cat /var/log/messages
-d琛ㄧず楂樹寒涓嶅悓鐨勫湴鏂癸紝-n琛ㄧず澶氬皯縐掑埛鏂頒竴嬈°
璇ユ寚浠わ紝涓嶄細鐩存帴榪斿洖鍛戒護琛岋紝鑰屾槸瀹炴椂鎵撳嵃鏃ュ織鏂囦歡涓鏂板炲姞鐨勫唴瀹癸紝榪欎竴鐗規э紝瀵逛簬鏌ョ湅鏃ュ織鏄闈炲父鏈夋晥鐨勩傚傛灉鎯崇粓姝㈣緭鍑猴紝鎸 Ctrl+C 鍗沖彲銆
鍦↙inux緋葷粺涓錛屾湁涓変釜涓昏佺殑鏃ュ織瀛愮郴緇燂細
榪炴帴鏃墮棿鏃ュ織--鐢卞氫釜紼嬪簭鎵ц岋紝鎶婄邯褰曞啓鍏ュ埌/var/log/wtmp鍜/var/run/utmp錛宭ogin絳夌▼搴忔洿鏂皐tmp鍜寀tmp鏂囦歡錛屼嬌緋葷粺綆$悊鍛樿兘澶熻窡韙璋佸湪浣曟椂鐧誨綍鍒扮郴緇熴
榪涚▼緇熻--鐢辯郴緇熷唴鏍告墽琛屻傚綋涓涓榪涚▼緇堟㈡椂錛屼負姣忎釜榪涚▼寰榪涚▼緇熻℃枃浠訛紙pacct鎴朼cct錛変腑鍐欎竴涓綰褰曘傝繘紼嬬粺璁$殑鐩鐨勬槸涓虹郴緇熶腑鐨勫熀鏈鏈嶅姟鎻愪緵鍛戒護浣跨敤緇熻°
閿欒鏃ュ織--鐢眘yslogd錛8錛夋墽琛屻傚悇縐嶇郴緇熷畧鎶よ繘紼嬨佺敤鎴風▼搴忓拰鍐呮牳閫氳繃syslog錛3錛夊悜鏂囦歡/var/log/messages鎶ュ憡鍊煎緱娉ㄦ剰鐨勪簨浠躲傚彟澶栨湁璁稿歎NIX紼嬪簭鍒涘緩鏃ュ織銆傚儚HTTP鍜孎TP榪欐牱鎻愪緵緗戠粶鏈嶅姟鐨勬湇鍔″櫒涔熶繚鎸佽︾粏鐨勬棩蹇椼

③ 求LINUX下,C語言編寫的日誌輸出源碼~

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <dirent.h>
#include <time.h>
#define LOGFILE "./dir_log_0"
int g_Count;
//#define MAXLEN 1024
void WriteDebugLog(char *str);
int main(int argc, char **argv)
{
char str[1024]={0};
strcpy(str,"file no find");
int i=0,j=0;
for (i=0; i<10; i++)
{
for (j=0; j<50; j++)
{
WriteDebugLog(str);
}

}
return 0;
}
void WriteDebugLog(char *str)
{
char buf[2048]={0};
char logFileName[50]={0};
//long MAXLEN = 50*1024*1024;//50MB
int iMax = 1024;//1K
time_t timep;
FILE *fp = NULL;
struct tm *p;
time(&timep);
p = localtime(&timep);
memset(buf,0,sizeof(buf));
sprintf(buf,"[%d-%d-%d %d:%d:%d][DEBUG]",(1900+p->tm_year),(1+p->tm_mon), p->tm_mday,p->tm_hour, p->tm_min, p->tm_sec); //星期p->tm_wday
strcat(buf,str);
strcat(buf," ");
strcpy(logFileName,LOGFILE);
int len = strlen(logFileName);
logFileName[len-1] = Ɔ'+g_Count;
fp = fopen(logFileName,"r");
if(fp==NULL)
{
fp = fopen(logFileName,"w+");
}
else
{
fseek(fp,0,2);//SEEK_END值為
if( ftell(fp) >= iMax)
{
fclose(fp);

if (g_Count >= 9)
{
logFileName[len-1] = Ɔ'
g_Count=0;
}
else
{
g_Count++;
logFileName[len-1] = Ɔ'+g_Count;
// printf(" %c",Ɔ'+g_Count);
}
fp = fopen(logFileName,"w+");
}
else
{
fclose(fp);
fp = fopen(logFileName,"a");
}
}
fwrite(buf,1,strlen(buf),fp);
fclose(fp);
}

④ LINUX下C語言編程怎麼列印日誌

我們的程序一般都會產生輸出信息。但是伺服器程序一般卻不希望輸出信息到屏幕上,因為沒有人盯著你的程序執行。所以我們要把一些信息寫成日誌文件,正常情況下運行程序的人不用關心日誌里的內容,只有在出現問題的時候才會查看日誌文件里的內容以確定問題所在。
但如果我們的程序要自己生成一個文件來保存日誌卻不是好主意,因為這一方面增加了維護程序運行的人的負擔,另一方面自己維護起系統來也多有不便。
在Linux系統中有一個系統日誌,通常放在/var/log目錄下,比如文件名是syslog的,系統中的一些程序產生的日誌信息都會存放到這個文件里。日誌文件有固定的格式,比如第1列是消息產生的時間,第2列是機器名(因為日誌記錄程序支持遠程連接),第3列是標記信息(一般就是程序名稱)等。而且對應的有一些工具來對這個日誌進行維護,比如通過輪回機制保證日誌文件大小不會把磁碟空間占盡。所以我們把自己程序的信息也寫到這個系統日誌里是比較好的想法。
在GNU C語言庫提供的內容中,有介面可以用來做這件事。用下面的命令查看:

nm -D /lib/libc.so.6 | grep log

可以看到一些調用:

000b9410Tcloselog
0008b870Tgetlogin
0008b960Tgetlogin_r
000d0180T__getlogin_r_chk
000bd190Tklogctl
00027450T__open_catalog
000b9380Topenlog
0008bae0Tsetlogin
000b8b80Tsetlogmask
000b9350Tsyslog
000b9320T__syslog_chk
000b92f0Tvsyslog
000b8da0T__vsyslog_chk

這裡面的三個函數openlog, syslog, closelog是一套系統日誌寫入介面。另外那個vsyslog和syslog功能一樣,只是參數格式不同。
程序的用法示例代碼如下:

#include<syslog.h>
intmain(intargc,char**argv)
{
openlog("MyMsgMARK",LOG_CONS|LOG_PID,0);
syslog(LOG_DEBUG,
"'%s' ",
argv[0]);
closelog();
return0;
}

編譯生成可執行程序後,運行一次程序將向/var/log/syslog文件添加一行信息如下:

Feb1208:48:38localhostMyMsgMARK[7085]:'./a.out'

Feb 12 08:48:38 localhost MyMsgMARK[7085]: This is a syslog test message generated by program './a.out'

LOG_CONS
.

LOG_NDELAY
Opentheconnectionimmediately(normally,).

LOG_NOWAIT
Don』.(TheGNUClibrarydoesnotcreatea
childprocess,.)

LOG_ODELAY
TheconverseofLOG_NDELAY;()iscalled.(Thisisthedefault,andneed
notbespecified.)

LOG_PERROR
(NotinSUSv3.)Printtostderraswell.

LOG_PID
IncludePIDwitheachmessage.

第三個參數指明記錄日誌的程序的類型。

syslog函數及參數
syslog函數用於把日誌消息發給系統程序syslogd去記錄,此函數原型是:
void syslog(int priority, const char *format, ...);
第一個參數是消息的緊急級別,第二個參數是消息的格式,之後是格式對應的參數。就是printf函數一樣使用。

如果我們的程序要使用系統日誌功能,只需要在程序啟動時使用openlog函數來連接syslogd程序,後面隨時用syslog函數寫日誌就行了。

另外,作為syslog的替代程序的新一代工具是syslog-ng,syslog-ng具有很強的網路功能,可以方便地把多台機器上的日誌保存到一台中心日誌伺服器上。

⑤ 在 linux環境下,我把服務產生的log文件刪除了。現在不重啟服務,怎麼讓日誌再列印出來

這個沒辦法的 要重起
以後這種情況不要刪除文件 而是清空文件 最簡單的方法是創建一個空文件 然後用空文件替代log文件就可以

⑥ 在linux中怎麼查看錯誤日誌

1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。

閱讀全文

與c在linux上列印日誌相關的資料

熱點內容
主板無vga插槽怎麼連接編程器 瀏覽:521
錄視頻文件在哪裡刪除 瀏覽:881
word2013如何插入文件 瀏覽:233
proe教程百度網盤 瀏覽:197
如何控制遠程linux伺服器 瀏覽:740
it教學app有哪些 瀏覽:34
怎麼在ps摳的圖變成矢量文件 瀏覽:405
口袋妖怪銀魂安卓v11 瀏覽:1
網站上芒果tv的賬號都是什麼 瀏覽:104
帶公式的表格如何刷新數據 瀏覽:81
數據標注語音和2d哪個好 瀏覽:145
保存excel文件的方法 瀏覽:655
手機上看不到電腦上的文件 瀏覽:626
關於ps的微信公眾號 瀏覽:612
矩陣論教程 瀏覽:971
字體文件分系統嗎 瀏覽:921
編程一級考試要帶什麼證件 瀏覽:923
extjs表格修改前數據 瀏覽:612
什麼是資料庫的函數 瀏覽:722
oppo手機怎麼用數據線連接電腦 瀏覽:247

友情鏈接