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

热点内容
java时间封装 浏览:394
微信忘记登录密码怎么修改 浏览:824
tomcatcore文件分析 浏览:585
济南电脑编程学校哪个好 浏览:825
数据库与应用第七章 浏览:138
联想手机照片在哪个文件 浏览:137
00后时尚qq分组名称 浏览:143
pps被网络运营商或防火墙限制 浏览:488
无线网络规划目标多选题 浏览:588
qq好友数据在哪里找 浏览:464
养老金显示无数据是什么意思 浏览:132
写日记好用的app 浏览:105
华硕笔记本网络共享 浏览:518
小米盒子不断升级 浏览:608
聚力视频下载的文件在哪 浏览:297
竞争数据采集主要包括什么 浏览:379
视频文件各种格式 浏览:694
dnf90版本巨龙地下城 浏览:566
高清地图在哪个网站 浏览:592
赣州市区哪里可以学电脑编程 浏览:641

友情链接