linux下C语言编程打印log日志
来源:互联网 发布:淘宝店客服如何添加 编辑:程序博客网 时间:2024/05/14 11:14
linux的日志系统一直以来都是在linux上开发必学的一部分内容。之前在学习openstack的时候,在对openstack组件的发生的错误进行调试时,老师就说要多看日志的报错,从这里找到相关线索再去修改配置文件。结果很多的报错都是通过组件对应的日志文件反映出来而修改成功的,因此使用好linux日志系统对了解linux编程有很大的帮助。
日志文件简述
其中日志一般都在/var/log目录下。该目录下有以下几个重要的的日志文件。
/var/log/maillog:记录邮件的往来信息,其实主要是记录sendmail与dovecot所产生的信息。
/var/log/dmesg:记录开机开始到现在的内核检测过程所产生的各项信息。如果内核编程的模块中使用printk(),将会把相关信息打印到这里。
/var/log/messages:系统发生的重要信息或者是错误信息都会记录在这个文件中,如果系统发生错误,这个文件就是需要查阅的文件之一。
/var/log/httpd:这个文件里面主要记录各种网络服务信息。
/var/log/cron:这个日志跟例行工作调度有关。即crontab有没有被执行,执行过程中有没有发生错误,在这个日子中均有体现。
打印日志文件
1.内核打印日志
#include<linux/security.h>#include<linux/sysctl.h>static unsigned long long count = 0;int task_create_hook(unsigned long clone_flags) { printk("[+geek] call task_create(). count=%llu\n", ++count); return 0; } static struct security_operations geek_ops = { .name = "geek", .task_create = task_create_hook, }; static __init int geek_init(void) { printk("[+geek] loading...\n"); if(register_security(&geek_ops)){ printk("[+geek] register faild\n"); } return 0; } security_initcall(geek_init);
在linux中使用dmesg命令即可查看内核输出的日志。
2.非内核编程打印日志
#include <syslog.h>int main(int argc, char **argv){ openlog("MyMsgMARK", LOG_CONS | LOG_PID, 0); syslog(LOG_DEBUG, "This is a syslog test message generated by program '%s'\n", argv[0]); closelog(); return 0;}
编译生成可执行程序后,运行一次程序将向/var/log/syslog文件添加一行信息如下:
Feb 12 08:48:38 localhost MyMsgMARK[7085]: This is a syslog test message generated by program
'./a.out'
Feb 12 08:48:38 localhost MyMsgMARK[7085]: This is a syslog test message generated by program './a.out'
如果我们的程序要使用系统日志功能,只需要在程序启动时使用openlog函数来连接syslogd程序,后面随时用syslog函数写日志就行了。
rsyslog
#Myloglocal2.* /var/log/mylog修改完保存后重启rsyslog服务 :/etc/init.d/rsyslog restart 或service rsyslog restart 或systemctl restart rsyslog
#include <syslog.h>int main(int argc, char **argv){ openlog("MyLog", LOG_CONS | LOG_PID, LOG_LOCAL2); syslog(LOG_INFO, "This is a syslog test message generated by program '%s'\n", argv[0]); closelog(); return 0;}编译运行上述代码后,就会在 /var/log 目录下多出一个mylog文件
- linux下C语言编程打印log日志
- linux环境应用程序LOG日志打印(C语言)
- 用C语言打印日志(Log)
- C语言打印Log
- linux log 日志编程
- C语言如何打印LOG
- Linux c日志打印
- c 宏定义log日志简单打印
- Linux 下 C 语言编程
- Linux下C语言编程
- Linux 下 C 语言编程
- Linux 下 C 语言编程
- linux下C语言编程
- Linux 下 C 语言编程
- Linux下C语言编程
- Linux 下 C 语言编程
- Linux 下 C 语言编程
- Linux下C语言编程
- 野木香linux学习笔记
- Git_Git基本操作_第5课_Git本地分支与合并
- PHP学习笔记之类
- 动态SQL拼接
- 64位Ubuntu kylin 16.04下使用DNW下载uboot到tiny4412的EMMC
- linux下C语言编程打印log日志
- 问题 B: Rightmost Digit
- coco2dx在IOS真机上使用自定义字体不正常的问题
- 微信公众平台应用号开发教程
- 多态的必要条件、重载和重写的区别
- hdu 5890 bitset+背包思想
- aspectj-autoproxy Controller未生效解决方案
- 关于这个博客
- 第四周 项目 3.2 单链表应用之两链表之间的连接