导航:首页 > 编程系统 > 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上打印日志相关的资料

热点内容
数据标注语音和2d哪个好 浏览:145
保存excel文件的方法 浏览:655
手机上看不到电脑上的文件 浏览:626
关于ps的微信公众号 浏览:612
矩阵论教程 浏览:971
字体文件分系统吗 浏览:921
编程一级考试要带什么证件 浏览:923
extjs表格修改前数据 浏览:612
什么是数据库的函数 浏览:722
oppo手机怎么用数据线连接电脑 浏览:247
恒智天成备份文件在哪里 浏览:976
电脑没联网怎么拷贝文件 浏览:224
wps工具栏怎么换成中文 浏览:338
win7和xp共享文件 浏览:883
苹果4代音量键没反应 浏览:827
怎样打开tif文件 浏览:153
java下载文件zip 浏览:440
qq浏览器压缩文件怎么设密码 浏览:526
黄埔数控编程哪里好 浏览:406
mac109升级1010 浏览:691

友情链接