当前位置: 首页 > news >正文

嵌入式开发之syslog和rsyslog构建日志记录

1.syslogd作客户端

BusyBox v1.20.2 (2022-04-06 16:19:14 CST) multi-call binary.Usage: syslogd [OPTIONS]System logging utility-n              Run in foreground-O FILE         Log to FILE (default:/var/log/messages)-l N            Log only messages more urgent than prio N (1-8)-S              Smaller output-s SIZE         Max size (KB) before rotation (default:200KB, 0=off)-b N            N rotated logs to keep (default:1, max=99, 0=purge)-R HOST[:PORT]  Log to IP or hostname on PORT (default PORT=514/UDP)-L              Log locally and via network (default is network only if -R)-D              Drop duplicates-C[size_kb]     Log to shared mem buffer (use logread to read it)-f FILE         Use FILE as config (default:/etc/syslog.conf)

大概翻译下:

BusyBox v1.20.2 (2022-04-06 16:19:14 CST) multi-call binary.Usage: syslogd [OPTIONS]System logging utility-n              运行在前台。-O FILE         log输出到指定文件中 (默认:/var/log/messages)。-l N            设置记录的优先级,如果设置-l 7,是不会记录等级7,即LOG_DEBUG的,只会记录LOG_INFO及更高优先级。-S              是否显示hostname,以及user.info之类的详细信息。-s SIZE         在log达到SIZE后,循环log到messgas.0中,后续依次变动。-b N            保持的messages个数,messages最新,带的数字越大越老。依次覆盖。-R HOST[:PORT]  log输出到指定远程服务器。(默认 PORT=514/UDP)-L              log本地保存和网络传输 (如果设置-R的话,默认是网络传输)-D              Drop duplicates-C[size_kb]     log输出到共享内存,通过logread读取。-f FILE         指定conf文件。(default:/etc/syslog.conf)

从帮助信息,我们首先可以看到busybox,也就是我所查看的设备的syslogd并不是单独的应用,是busybox里面配置的,另外,关于配置文件,有时候在/etc下看不到配置文件,手动创建也不管用,这是因为busybox配置的时候,没有勾选syslogd配置文件选项,如下:
在这里插入图片描述
不支持配置文件也没事,可以在运行的时候指定参数,下面是一个脚本,S01logging:

#!/bin/sh
#
# Start logging
#SYSLOGD_ARGS="-n -s 10240 -O /userdata/messages -b 10 -R 192.168.0.161 -L"
KLOGD_ARGS=-n
[ -r /etc/default/logging ] && . /etc/default/loggingstart() {printf "Starting logging: "start-stop-daemon -b -S -q -m -p /var/run/syslogd.pid --exec /sbin/syslogd -- $SYSLOGD_ARGSstart-stop-daemon -b -S -q -m -p /var/run/klogd.pid --exec /sbin/klogd -- $KLOGD_ARGSecho "OK"
}stop() {printf "Stopping logging: "start-stop-daemon -K -q -p /var/run/syslogd.pidstart-stop-daemon -K -q -p /var/run/klogd.pidecho "OK"
}case "$1" instart)cat /etc/os-releasestart;;stop)stop;;restart|reload)stopstart;;*)echo "Usage: $0 {start|stop|restart}"exit 1
esacexit $?

注意:上面的 -R 192.168.0.161,没有设置端口,默认是udp 514端口,将log信息上传到这个ip的服务器,所以这个ip的设备也需要配置一个服务端,然后就可以接收设备的log信息了。

2.rsyslog作服务端

现在默认的linux pc系统都已经安装了rsyslog的,我用的是Ubuntu18.04默认就安装了这个服务,只是没启动而已,修改配置,来作为log的服务端,打开修改配置文件:

sudo vim /etc/rsyslog.conf

将下面屏蔽的地方打开:

#################
#### MODULES ####
#################module(load="imuxsock") # provides support for local system logging
#module(load="immark")  # provides --MARK-- message capability# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")

修改为:

#################
#### MODULES ####
#################module(load="imuxsock") # provides support for local system logging
#module(load="immark")  # provides --MARK-- message capability# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

这样修改之后,启动服务,因为默认是没有启动的,启动命令:

sudo service rsyslog start

查看是否监听udp 514端口:

zl@zl-Lenovo:~$ sudo netstat -aulntp | grep rsyslog
[sudo] password for zl:
udp        0      0 0.0.0.0:514         0.0.0.0:*                      936/rsyslogd
udp6       0      0 :::514              :::*                           936/rsyslogd

客户端上传的日志会自动保存到/var/log/syslog文件里面,而且是无法区分设备的,比如一个ip是192.168.0.34的设备,还有一个是192.168.0.165的设备,他们的日志会混到一个文件,如果要分开,甚至要按照应用来区分,也是可以的,需要设置一个模板,再次打开配置文件,在 GLOBAL DIRECTIVES 下添加如下内容:

###########################
#### GLOBAL DIRECTIVES ####
############################$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *
$template RemoteLogs,"/var/log/%HOSTNAME%/messages.log" *
*.* ?RemoteLogs
& ~

" $template RemoteLogs," /var/log/%HOSTNAME%/messages.log" *"保存的文件如下:

root@zl-Lenovo:/var/log# tree .
.
├── 192.168.0.165
│   └── messages.log
├── 192.168.0.34
│   └── messages.log

" $template RemoteLogs," /var/log/%HOSTNAME%/%PROGRAMNAME%.log" *"保存的文件如下:

root@zl-Lenovo:/var/log# tree .
.
├── 192.168.0.165
│   ├── mediaserver.log
│   └── nvrserver.log
├── 192.168.0.34
│   └── nvrserver.log

可以根据需求来设置服务端,保存不同形式的log文件。

注意:

root@zl-Lenovo:/var/log# tree .
.
├── 192.168.0.165
│   ├── mediaserver.log
│   └── nvrserver.log
├── 192.168.0.34
│   └── nvrserver.log

可以根据需求来设置服务端,保存不同形式的log文件。

注意:

如果删掉了/var/log目录下保存的日志文件,必须重启下rsyslog服务,否则不会再保存文件。

相关文章:

嵌入式开发之syslog和rsyslog构建日志记录

1.syslogd作客户端 BusyBox v1.20.2 (2022-04-06 16:19:14 CST) multi-call binary.Usage: syslogd [OPTIONS]System logging utility-n Run in foreground-O FILE Log to FILE (default:/var/log/messages)-l N Log only messages more urge…...

Jaeger的经典BUG原创

前端,笔者在使用Jaeger进行Trace监控的时候,当数据量增大到一定数量级时,出现了一次CPU暴增导致节点服务器挂了的经典案例,这里对案例进行一个简单的抽象,供大家参考: 首先通过pprof对耗时的函数进行定位&…...

四款简洁好看 自适应的APP下载单页源码

分享四款简洁好看 自适应的APP下载单页源码,采用了底部自动获取ICP备案号,还有蓝奏云文件直链解析。不光可以做APP下载引导页,也可以随便改下按钮做网站引导页,自由发挥即可! 蓝奏云直链解析的好处:APP放在…...

【服务器】交换机带外管理和带内管理

一、交换机的带外管理是什么? 在带外管理模式中,网络的管理控制信息与用户网络的承载业务信息在不同的逻辑信道传送。 带外管理最大的优势在于,当网络出现故障中断时数据传输和管理都可以正常进行——不同的物理通道传送管理控制信息和数据…...

Kotlin的内置函数 apply、let、run、with、also

let 1.let函数返回类型,是根据匿名函数的最后一行变化而变化 2.let函数中的匿名函数里面持有的是it 集合自身 fun main() {var num1 1var num2 1var result:Intresult num1 num2var str result?.let {//传入本身,it指代本身即result,result不为空…...

2023年人工景点行业研究报告

第一章 行业概况 1.1 定义及分类 人工景点行业通常指的是设计和构建的为提供娱乐、教育或文化体验的景点。这些景点可能包括主题公园,博物馆,动物园,水族馆,科学中心,历史遗迹,艺术展览等。这个行业通常包…...

react轮播图

这里 我用的是组件: 网址:Collapse 折叠面板 - Ant Design Mobile 1.首先 先声明一个变量 2、把需要的数据存存进去 3、组件内容复制过来(这里用到的是map循环) 然后图片就出来了 就是这个简单 哈哈哈哈!&#xff01…...

Openlayers 叠加天地图-中国近海海洋等深面图层服务

Openlayers 叠加天地图-中国近海海洋等深面图层服务 核心代码完整代码:在线示例 偶然发现天地图有一个近海海洋图层,觉得不错,于是尝试叠加一下,花费了一些时间,叠加成功,这里分享一下。 本文包括核心代码…...

uniapp移动端h5设计稿还原

思路 动态设置html的font-size大小 实现步骤 先创建一个public.css文件,设置初始的font-size大小 /* 注意这样写 只能使用css文件, scss 是不支持的, setProperty 只适用于原生css上 */ html {--gobal-font-size: 0.45px; } .gobal-font-size {font-size: var(--g…...

后端数据配置相对路径,前端添加网站根 URL (根路径)- js获取网站项目根路径- 获取根路径后的第一个斜杠前 / 的项目- - 判断url包含某字符串

1、js获取网站项目根路径 js获取项目根路径,如下: 原 http://localhost:8080/testproject/test.html 根路径:http://localhost:8080 function getRootPath(){//获取当前网址,// 如: http://localhost:8080/testpro…...

deepspeed多机多卡并行训练指南

文章目录 前言离线配置训练环境共享文件系统多台服务器之间配置互相免密登录pdsh多卡训练可能会碰到的问题注意总结 前言 我的配置: 7机14卡,每台服务器两张A800 问:为啥每台机只挂两张卡? 答:给我的就这样的&#…...

9.Redis-zset

zset zset 有序集合 -> 升序常用命令zaddzcardzcountzrangezrevrange -> reverse 逆序zrangebyscorezpopmaxzpopminbzpopmax / bzpopminzrankzrevrankzscorezremzremrangebyrankzremrangebyscorezincrby集合间操作zinter -> 交集zunion -> 并集zdiff -> 差集zin…...

云计算的三个主要服务模型:IaaS、PaaS 和 SaaS

文章目录 介绍基础设施即服务(Infrastructure as a Service,IaaS)平台即服务(Platform as a Service,PaaS)软件即服务(Software as a Service,SaaS) 区别基础设施即服务&…...

spring ioc,DI,AOP概述

Spring是一个轻量级的Java开发框架。其中,IoC、DI和AOP是Spring框架的核心概念。 IoC(Inversion of Control,控制反转):IoC是一种设计模式,是指将对象的创建、管理和控制权交给IoC容器,由IoC容器…...

meethigher-Apache Poi 实现Excel多级联动下拉框

由于最近做的功能,需要将接口返回的数据列表,输出到excel中,以供后续导入,且网上现有的封装,使用起来都较为麻烦,故参考已有做法封装了工具类。 使用apache poi实现excel联动下拉框思路 创建隐藏单元格&a…...

基于食肉植物算法优化的BP神经网络(预测应用) - 附代码

基于食肉植物算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于食肉植物算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.食肉植物优化BP神经网络2.1 BP神经网络参数设置2.2 食肉植物算法应用 4.测试结果:5…...

FFDNet-pytorch版本代码训练教程

一、FFDNet-pytorch版本代码下载 (1)FFDNet-pytorch下载 https://download.csdn.net/download/qq_41104871/88233742 (2)FFDNet-pytorch版本代码运行环境配置 https://blog.csdn.net/qq_41104871/article/details/132497008 二、FFDNet-pytorch版本代码训练教程 (1)按…...

C语言练习7(巩固提升)

C语言练习7 编程题 前言 “芳林新叶催陈叶,流水前波让后波。”改革开放40年来,我们以敢闯敢干的勇气和自我革新的担当,闯出了一条新路、好路,实现了从“赶上时代”到“引领时代”的伟大跨越。今天,我们要不忘初心、牢记…...

golangORM框架Gorm

ORM框架Gorm gorm简介gorm声明模型gorm连接到数据库gorm创建记录gorm查询记录gorm高级查询gorm更新gorm删除SQL 构建器gorm Belongs To关系gorm Has One关系gorm Has Many关系gorm Many To Many关系gorm 实体关联gorm 会话gorm事务Gorm总结...

Python项目实战之《飞机大战游戏》

目录 一、Pygame库包简介 二、Pygame安装 三、项目开发思路 3.1前言 3.2飞机大战开发步骤 一、Pygame库包简介 Pygame是一个基于python的游戏开发库,它提供一系列的工具和接口,使开发人员能够轻松的创建各种类型的游戏,包括2D游戏和简单…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

网络编程(UDP编程)

思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...