基于Yocto和Buildroot平台的Syslog 配置

2024-01-30 17:08

本文主要是介绍基于Yocto和Buildroot平台的Syslog 配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2. Syslog简介

2.1. 简介
在Unix类操作系统上,syslog广泛应用于系统日志,负责记录内核和应用程序产生的日志信息。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。
2.2. 日志格式
规定syslog消息的UDP报文不能超过1024字节,并且全部由可打印的字符组成。完整的syslog消息由3部分组成,分别是PRI、HEADER和MSG。大部分syslog都包含PRI和MSG部分,而HEADER可能没有。
如下是一条syslog消息:

<31>Jun 12 19:50:07 zsir syslog_test[3910]: debug-level message.
<31>是PRI部分,其中高5位为Facility,低3位为Severity;
Jun 12 19:50:07 zsir是HEADER部分;
syslog_test[3910]: debug-level message.是MSG部分;

3. Syslog的配置和使用

3.1. 基于yocto平台的syslog使用
3.1.1. 确认系统内有syslog服务
首先我们需要先确认我们的开发板上是否安装了syslog服务,在开发板的文件系统下输入syslogd help命令查看如果不支持就是busybox的版本太低了。
在这里插入图片描述

3.1.2. Syslog.conf
对于不同类型的Unix,标准UnixLog系统的设置,实际上除了一些关键词的不同,系统的syslog.conf格式是相同的。syslog采用可配置的、统一的系统登记程序,随时从系统各处接受log请求,然后根据/etc/syslog.conf中的预先设定把log信息写入相应文件中、邮寄给特 定用户或者直接以消息的方式发往控制台。值得注意的是,为了防止入侵者修改、删除messages里的记录信息,可以采用用打印机记录或采用方式来挫败入 侵者的企图。
格式如下所示:
类型.级别;类型.级别 		[TAB] 		 动作

类型facility:
保留字段中的“类型”代表信息产生的源头,可以是:

	auth    认证系统,即询问用户名和口令cron    系统定时系统执行定时任务时发出的信息daemon  某些系统的守护程序的syslog,如由in.ftpd产生的logkern    内核的syslog信息lpr     打印机的syslog信息mail    邮件系统的syslog信息mark    定时发送消息的时标程序news    新闻系统的syslog信息user    本地用户应用程序的syslog信息uucp    uucp子系统的syslog信息local0..7 种本地类型的syslog信息,这些信息可以又用户来定义\*       代表以上各种设备

级别priority:
保留字段中的“级别”代表信息的重要性,可以是:

	emerg   紧急,处于Panic状态。通常应广播到所有用户; alert   告警,当前状态必须立即进行纠正。例如,系统数据库崩溃; crit    关键状态的警告。例如,硬件故障; err     其它错误; warning 警告; notice  注意;非错误状态的报告,但应特别处理; info    通报信息; debug   调试程序时的信息; none    通常调试程序时用,指示带有none级别的类型产生的信息无需送出。如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。

动作action:

“动作”域指示信息发送的目的地。可以是:/filename   日志文件。由绝对路径指出的文件名; @host       远程主机; @符号后面可以是ip,也可以是域名,默认在/etc/hosts文件下loghost这个别名已经指定给了本机。user1,user2 指定用户。如果指定用户已登录,那么他们将收到信息; 
*           所有用户。所有已登录的用户都将收到信息

Syslog.conf示例:
在这里插入图片描述

3.1.3. Syslog编程
在这里插入图片描述

openlog函数会分配并打开一个文件描述符,并通过它来写日志。你可以使用closelog函数来关闭它。syslog()函数主要的是第一个参数priority,后面那些参数就是和printf( )函数用法一样了。
option:用于openlog()的option参数可以是以下几个的组合:

•	LOG_CONS : 如果送到system logger时发生问题,直接写入系统console。
•	LOG_NDELAY : 立即开启连接(通常,连接是在第一次写入讯息时才打开的)。
•	LOG_PERROR : 将讯息也同时送到stderr
•	LOG_PID : 将PID含入所有讯息中

facility:该参数用来指定何种程式在记录讯息,这可让设定档来设定何种讯息如何处理。

•	LOG_AUTH : 安全/授权讯息(别用这个,请改用LOG_AUTHPRIV)
•	LOG_AUTHPRIV : 安全/授权讯息
•	LOG_CRON : 时间守护神专用(cron及at)
•	LOG_DAEMON : 其它系统守护神
•	LOG_KERN : 核心讯息
•	LOG_LOCAL0到LOG_LOCAL7 : 保留
•	LOG_LPR : line printer次系统
•	LOG_MAIL : mail次系统
•	LOG_NEWS : USENET news次系统
•	LOG_SYSLOG : syslogd内部所产生的讯息
•	LOG_USER(default) : 一般使用者等级讯息
•	LOG_UUCP : UUCP次系统

priority:决定讯息的重要性. 以下的等级重要性逐次递减:

•	LOG_EMERG : 系统无法使用
•	LOG_ALERT : 必须要立即采取反应行动
•	LOG_CRIT : 重要状况发生
•	LOG_ERR : 错误状况发生
•	LOG_WARNING : 警告状况发生
•	LOG_NOTICE : 一般状况,但也是重要状况
•	LOG_INFO : 资讯讯息
•	LOG_DEBUG : 调试讯息

3.1.4. 配置syslogd
我们根据syslogd help显示的默认配置文件来查看该配置文件是否存在,如果不存在我们需要创建一个配置文件如:touch /etc/syslog.conf,同时使用syslogd -f /etc/syslog.conf来进行绑定。
1)我们的部分syslog.conf配置如kern.*和user.*已在本地设定,在编译前的yocto配置文件为yocto/meta-asr-ipc/recipes-core/busybox/busybox_%.bbappend,
在这里插入图片描述
在这里插入图片描述

配置编辑文件,例如增加"local5.*" /var/log/my.log"
在这里插入图片描述

也可以在syslog.conf里直接进行编辑,文件目录为/home/sunhelong/work/yocto/poky/meta/recipes-core/busybox/files/syslog.conf

在这里插入图片描述

在这里插入图片描述

重新编译后烧写到开发板。
2)如果开发板系统已经启动,还想保存日志到指定目录,可在开发板系统目录下更改/etc/syslog.conf进行配置,重启客户端syslogd使设置生效。但下次重新烧写系统时配置会失效。
例 local5.* /var/log/my.log
在这里插入图片描述

3.1.5. 测试syslog
重新启动syslog:/etc/init.d/syslog restart
在这里插入图片描述

运行编译好的程序
查看/var/log/my.log
在这里插入图片描述

3.1.6. Syslog测试代码

#include<stdio.h>
#include<stdlib.h>
#include <syslog.h>void Info(void)
{openlog("info",LOG_PID,LOG_LOCAL5);// LOG_LOCAL5表示信息类型syslog(LOG_INFO, "hello %s","woring");//LOG_INFO表示优先级
}void Woring(void)
{openlog("woring",LOG_PID,LOG_LOCAL5);syslog(LOG_WARNING, "hello %s","test");
}int main()
{Info();Woring();closelog();return 0;
}

3.2. 基于buildroot平台的syslog使用
3.2.1. 确认系统已安装syslogd
首先我们需要先确认我们的开发板上是否安装了syslog服务,在开发板的文件系统下输入syslogd help命令查看如果不支持就是busybox的版本太低了,如图出现this version of syslogd ignores /etc/syslog.conf就是这个版本的syslogd不支持/etc/syslog.conf,需要重新构建一个支持/etc/syslog.conf的linux系统。

3.2.2. 配置busybox使其支持syslog.conf
在buildroot目录下运行make busybox-mencuconfig命令进行配置
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

选择保存后,在buildroot目录下运行make busybox-update-config进行配置更新。

3.2.3. Syslog.conf格式
如下所示:
在这里插入图片描述类型facility:
保留字段中的“类型”代表信息产生的源头,可以是:

	auth    认证系统,即询问用户名和口令cron    系统定时系统执行定时任务时发出的信息daemon  某些系统的守护程序的syslog,如由in.ftpd产生的logkern    内核的syslog信息lpr     打印机的syslog信息mail    邮件系统的syslog信息mark    定时发送消息的时标程序news    新闻系统的syslog信息user    本地用户应用程序的syslog信息uucp    uucp子系统的syslog信息local0..7 种本地类型的syslog信息,这些信息可以又用户来定义\*       代表以上各种设备

级别priority:
保留字段中的“级别”代表信息的重要性,可以是:

	emerg   紧急,处于Panic状态。通常应广播到所有用户; alert   告警,当前状态必须立即进行纠正。例如,系统数据库崩溃; crit    关键状态的警告。例如,硬件故障; err     其它错误; warning 警告; notice  注意;非错误状态的报告,但应特别处理; info    通报信息; debug   调试程序时的信息; none    通常调试程序时用,指示带有none级别的类型产生的信息无需送出。如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。

动作action:
“动作”域指示信息发送的目的地。可以是:

    /filename   日志文件。由绝对路径指出的文件名,此文件必须事先建立; @host       远程主机; @符号后面可以是ip,也可以是域名,默认在/etc/hosts文件下loghost这个别名已经指定给了本机。user1,user2 指定用户。如果指定用户已登录,那么他们将收到信息; 
*           所有用户。所有已登录的用户都将收到信息。

3.2.4. Syslog编程
在这里插入图片描述

openlog函数会分配并打开一个文件描述符,并通过它来写日志。你可以使用closelog函数来关闭它。syslog()函数主要的是第一个参数priority,后面那些参数就是和printf( )函数用法一样了。
option:用于openlog()的option参数可以是以下几个的组合:

•	LOG_CONS : 如果送到system logger时发生问题,直接写入系统console。
•	LOG_NDELAY : 立即开启连接(通常,连接是在第一次写入讯息时才打开的)。
•	LOG_PERROR : 将讯息也同时送到stderr
•	LOG_PID : 将PID含入所有讯息中

facility:该参数用来指定何种程式在记录讯息,这可让设定档来设定何种讯息如何处理。

•	LOG_AUTH : 安全/授权讯息(别用这个,请改用LOG_AUTHPRIV)
•	LOG_AUTHPRIV : 安全/授权讯息
•	LOG_CRON : 时间守护神专用(cron及at)
•	LOG_DAEMON : 其它系统守护神
•	LOG_KERN : 核心讯息
•	LOG_LOCAL0到LOG_LOCAL7 : 保留
•	LOG_LPR : line printer次系统
•	LOG_MAIL : mail次系统
•	LOG_NEWS : USENET news次系统
•	LOG_SYSLOG : syslogd内部所产生的讯息
•	LOG_USER(default) : 一般使用者等级讯息
•	LOG_UUCP : UUCP次系统

priority:决定讯息的重要性. 以下的等级重要性逐次递减:

•	LOG_EMERG : 系统无法使用
•	LOG_ALERT : 必须要立即采取反应行动
•	LOG_CRIT : 重要状况发生
•	LOG_ERR : 错误状况发生
•	LOG_WARNING : 警告状况发生
•	LOG_NOTICE : 一般状况,但也是重要状况
•	LOG_INFO : 资讯讯息
•	LOG_DEBUG : 除错讯息

3.2.5. 配置syslog.conf
1)在package/busybox目录下创建syslog.conf文件
在这里插入图片描述
2)然后在syslog.conf中写入消息处理配置文档,示例如下:
在这里插入图片描述

3)然后在busybox.mk添加如下代码,将syslog.conf增加到根文件系统。
在这里插入图片描述

4)在buildroot目录下进行重新编译:
make busybox-dirclean && make -j4
在这里插入图片描述

5)烧写到fpga,进行测试
可以看到此时的syslogd已经支持/etc/syslog.conf
在这里插入图片描述

而且根文件目录已经有Syslog.conf文件
在这里插入图片描述

运行测试代码后发现已经生成kernel.log和local0.log文件

在这里插入图片描述

6)如果开发板系统已经启动,还想保存日志到指定目录,可在开发板系统目录下更改/etc/syslog.conf进行配置,重启客户端syslogd使设置生效。
3.2.6. Syslog测试代码

#include <stdio.h>
#include <syslog.h>int main(int argc, char **argv)
{openlog("MyMsgMARK", LOG_CONS | LOG_PID, LOG_LOCAL0);syslog(LOG_EMERG,  "This is a syslog test message generated by program '%s'/n",  argv[0]);openlog("logtest", LOG_CONS | LOG_PID, LOG_USER);syslog(LOG_INFO,  "PID information, pid=%d\n",  getpid());closelog();return 0;
}

这篇关于基于Yocto和Buildroot平台的Syslog 配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/660940

相关文章

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

springboot家政服务管理平台 LW +PPT+源码+讲解

3系统的可行性研究及需求分析 3.1可行性研究 3.1.1技术可行性分析 经过大学四年的学习,已经掌握了JAVA、Mysql数据库等方面的编程技巧和方法,对于这些技术该有的软硬件配置也是齐全的,能够满足开发的需要。 本家政服务管理平台采用的是Mysql作为数据库,可以绝对地保证用户数据的安全;可以与Mysql数据库进行无缝连接。 所以,家政服务管理平台在技术上是可以实施的。 3.1

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

比较学习难度:Adobe Illustrator、Photoshop和新兴在线设计平台

从入门设计开始,几乎没有人不知道 Adobe 公司两大设计软件:Adobe Illustrator和 Photoshop。虽然AI和PS很有名,有一定设计经验的设计师可以在早期探索和使用后大致了解AI和PS的区别,但似乎很少有人会系统地比较AI和PS。目前,设计软件功能多样,轻量级和网页设计软件已成为许多设计师的需求。对于初学者来说,一篇有针对性的AI和PS比较总结文章具有非常重要的指导意义。毕竟

智慧环保一体化平台登录

据悉,在当今这个数字化、智能化的时代,环境保护工作也需要与时俱进,不断创新。朗观视觉智慧环保一体化平台应运而生,它利用先进的信息技术手段,为环保工作提供了更加便捷、高效的管理方式,成为推动绿色发展的重要力量。 一、智慧环保一体化平台的诞生背景 随着工业化进程的加快,环境污染问题日益严重,传统的环保管理模式已经难以满足现代社会的需求。为了提高环保工作的效率和质量,智慧环保一体化平台应运而

微信小程序开发必知必会:文件结构和基本配置

一、微信小程序基本文件结构 1.  project.config.json:项目的基本配置文件,包括项目名称、appid、项目目录、页面文件夹等。     {"setting": {"urlCheck": false,"es6": true,"postcss": true,"nodeModulesPath": "D:\\\\node_modules"},"appid": "wxd678e

【杂记-浅谈DHCP动态主机配置协议】

DHCP动态主机配置协议 一、DHCP概述1、定义2、作用3、报文类型 二、DHCP的工作原理三、DHCP服务器的配置和管理 一、DHCP概述 1、定义 DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种网络协议,主要用于在IP网络中自动分配和管理IP地址以及其他网络配置参数。 2、作用 DHCP允许计算机和其他设备通

Pycharm配置conda环境(解决新版本无法识别可执行文件问题)

引言: 很多小伙伴在下载最新版本的pycharm或者更新到最新版本后为项目配置conda环境的时候,发现文件夹目录中无法显示可执行文件(一般为python.exe),以下就是本人遇到该问题后试验和解决该问题的一些方法和思路。 一般遇到该问题的人群有两种,一种是刚入门对pycharm进行conda环境配置的小白(例如我),不熟悉相关环境配置的操作和过程,还有一种是入坑pycharm有段时间的老手