導航:首頁 > 編程系統 > 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上列印日誌相關的資料

熱點內容
華碩筆記本網路共享 瀏覽:518
小米盒子不斷升級 瀏覽:608
聚力視頻下載的文件在哪 瀏覽:297
競爭數據採集主要包括什麼 瀏覽:379
視頻文件各種格式 瀏覽:694
dnf90版本巨龍地下城 瀏覽:566
高清地圖在哪個網站 瀏覽:592
贛州市區哪裡可以學電腦編程 瀏覽:641
南方大數據300A類和C類 瀏覽:740
extjs數字格式化 瀏覽:337
桌面沒有其他文件怎麼找回 瀏覽:150
陝西養老app怎麼查不到我交的費用 瀏覽:582
導航怎麼變成pmf文件 瀏覽:224
找回手機刪除文件 瀏覽:600
手機qq皮膚 瀏覽:675
java類根路徑 瀏覽:677
linuxtelnet百度 瀏覽:655
資料庫多對一關系有什麼好處 瀏覽:893
xp共享有密碼怎麼設置 瀏覽:973
道法網路保護的責任主體有哪些 瀏覽:969

友情鏈接