輕量web伺服器開發日記09 日誌檔案的實現

2021-07-12 02:45:56 字數 1580 閱讀 6425

主流的伺服器都標配乙個日誌檔案,其檔案用於記錄伺服器執行的日常資訊,例如某個時間段的使用者請求連線數、訪問檔案統計數、成功或完成請求連線數、伺服器出錯資訊等等、該檔案主要幫助伺服器管理員更好地了解伺服器的運**況。

具體操作函式實現:

(1)開啟日誌檔案:

int log_file_open(const

char *pathname)

(2)往日誌檔案中寫入資訊:

int log_file_writen(char *logfile,char *filename, int *line, const

char *fmt, ...)

va_list ap;

time_t timep;

char *time_string = calloc(1,256), *ptr = calloc(1,1024);

char *buf1;

buf1 = calloc(1, 64);

int len = 0;

time(&timep);//取得當地時間

struct tm *timeinfo;

timeinfo = localtime(&timep);

strftime(time_string, 256, "%y年%m月%d日 %h時%m分%s秒", timeinfo); //建立字串時間戳

int_to_string(buf1, line);

for(va_start(ap, fmt); *fmt; fmt++)

va_end(ap);

}*(ptr + strlen(ptr)) = '\r';

*(ptr + strlen(ptr) + 1) = '\n';

*(ptr + strlen(ptr) + 2) = '\0';

writen(fd, ptr,strlen(ptr));

free(ptr);

free(time_string);

close(fd);

return

0;}

下面是(2)中呼叫到的操作函式實現:

//將整型轉換為字元

int int_to_string(char *buf, int val)

fin = buf;

while(temp > 9)

*(fin) = 48 + temp;

*(fin + 1) = '\0';

while(buf < fin)

return0;}

//往套接字描述符中寫n個位元組

size_t writen(int fd, const

void *vptr, size_t n)

nleft -= nwritten;

ptr += nwritten;

}return n;

}//在字串a的末尾新增字串b

return (a_len + b_len + 2);

}

效果例子:

19時35分19秒(test.c:69) head:accept has text/html

輕量web伺服器開發日記05 配置檔案的實現

配置檔案是伺服器必不可少的主要模組之一,它記錄著伺服器的初始化的相關引數,例如伺服器的埠和ip值,工作程序數目,工作根目錄等,而在目前三大伺服器 apache lighttpd nginx 的配置檔案中會有更多更複雜的引數,使得伺服器與該使用者的互動性大大的提高。在之前的日記中所介紹的記憶體池的塊大...

騰訊雲 輕量伺服器 體驗

例項規格 cpu 1核 記憶體 2gb 磁碟 系統盤 40gb 流量包 頻寬 3mbps,流量包 500gb 月 3年253塊,跟以前買的 雲伺服器cvm 標準型sa2,1核2g,一年350,相比便宜很多。記錄下對比體驗。開啟ssh客戶端,連線,跟 sa2 的北京節點一樣,基本秒連。進入 ssh,打...

WEB伺服器部署日記

近日朋友想開乙個論壇,他對這方面的東西不太懂 叫我幫忙弄乙個 跟他一商量,決定用他的新機器做伺服器 p4 2.4g ddr400 512m 的記憶體 其他配置忘了 使用在網上down的 dvbbs 7 sp2 sql版本 幾下把系統和sqlserver裝好,打好補丁,配好iis,裝上天網 就開始部署...