syslog 和 rsyslog

article/2025/10/5 22:15:23

1. 介绍

rsyslog可以简单的理解为syslog的超集,在老版本的Linux系统中,Red Hat Enterprise Linux 3/4/5默认是使用的syslog作为系统的日志工具,从RHEL 6 开始系统默认使用了rsyslog。

 其特性包括:

  • 支持输出日志到各种数据库,如 MySQL,PostgreSQL,MongoDB,ElasticSearch,等等;
  • 通过 RELP + TCP 实现数据的可靠传输(基于此结合丰富的过滤条件可以建立一种 可靠的数据传输通道供其他应用来使用);
  • 精细的输出格式控制以及对消息的强大 过滤能力;
  • 高精度时间戳;队列操作(内存,磁盘以及混合模式等); 支持数据的加密和压缩传输等。

2. 配置

/etc/rsyslog.conf

syslog的配置文件有多种书写方法:

  • sysklogd(一些结构不兼容新特性),
  • legacy rsyslog(以“$”开头的写法,如:$ModLoad imtcp.so),
  • RainerScript(一种新的格式,是最推荐使用的一种,尤其是需要做复杂的配置时)

在本文中的配置都比较简单,就采用了legacy rsyslog的配置书写方法。更多详情参考:

http://www.rsyslog.com/doc/master/configuration/basic_structure.html#statement-types

rsyslog的配置主要有以下模块:

  • modules,模块,配置加载的模块,如:ModLoad imudp.so配置加载UDP传输模块
  • global directives,全局配置,配置ryslog守护进程的全局属性,比如主信息队列大小(MainMessageQueueSize)
  • rules,规则(选择器+动作),每个规则行由两部分组成,selector部分和action部分,这两部分由一个或多个空格或tab分隔,selector部分指定源和日志等级,action部分指定对应的操作
  • 模板(templates)
  • 输出(outputs)

 

2.1 常用的modules

  • imudp,传统方式的UDP传输,有损耗
  • imtcp,基于TCP明文的传输,只在特定情况下丢失信息,并被广泛使用
  • imrelp,RELP传输,不会丢失信息,但只在rsyslogd 3.15.0及以上版本中可用

   更多参考:http://www.rsyslog.com/doc/master/configuration/modules/index.html
 

2.2 规则(rules)

规则的选择器(selectors)

selector也由两部分组成,设施和优先级,由点号.分隔。第一部分为消息源或称为日志设施,第二部分为日志级别。多个选择器用;分隔,如:*.info;mail.none

日志设施有:

  • auth(security), authpriv: 授权和安全相关的消息
  • kern: 来自Linux内核的消息
  • mail: 由mail子系统产生的消息
  • cron: cron守护进程相关的信息
  • daemon: 守护进程产生的信息
  • news: 网络消息子系统
  • lpr: 打印相关的日志信息
  • user: 用户进程相关的信息
  • local0 to local7: 保留,本地使用

日志级别有(升序):

  • debug:包含详细的开发情报的信息,通常只在调试一个程序时使用。
  • info:情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理。
  • notice: 不是错误情况,也不需要立即处理。
  • warning: 警告信息,不是错误,比如系统磁盘使用了85%等。
  • err:错误,不是非常紧急,在一定时间内修复即可。
  • crit:重要情况,如硬盘错误,备用连接丢失。
  • alert:应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失。
  • emerg:紧急情况,需要立即通知技术人员。

日志设施的配置:

  • . 代表比后面还要高的消息等级都会记录下来
  • .= 代表只有后面的这个消息等级会被记录下来
  • .! 代表除了后面的这个消息等级,其他的都会被记录下来。
local0.=debug                /home/admin/applogs/app-name/debug.log
local0.err;local0.warning;local0.info                /home/admin/applogs/app-name/info.log
local0.err                /home/admin/applogs/app-name/error.log

2.3 动作 (action)

action是规则描述的一部分,位于选择器的后面,规则用于处理消息。总的来说,消息内容被写到一种日志文件上,但也可以执行其他动作,比如写到数据库表中或转发到其他主机。

写到本地文件/var/log/lyh.log中

#
# Save message to other file
#
local0.*    /var/log/lyh.log

写到mysql数据库中

# modules, 要将日志写到mysql中需要加载ommysql模块
$ModLoad ommysql 
# rule, send to mysql
#*.*       :ommysql:database-server,database-name,database-userid,database-password
*.*       :ommysql:127.0.0.1,Syslog,syslogwriter,topsecret

2.4 模板(templates)

模板允许你指定日志信息的格式,也可用于生成动态文件名,或在规则中使用。

TEMPLATE_NAME:模板的名字;

PROPERTY:rsyslog本身支持的一些属性参数。

$template TEMPLATE_NAME,"text %PROPERTY% more text", [OPTION]
$template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log"
$template DailyPerHostLogs,"/var/log/syslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages.log"*.info ?DailyPerHostLogs
*.* ?DynamicFile

2.5 输出(outputs)

输出频道为用户可能想要的输出类型提供了保护,在规则中使用前要先定义.其定义如下所示,

NAME:指定输出频道的名称;FILE_NAME:指定输出文件;MAX_SIZE指定日志文件的大小,单位是bytes; ACTION:指定日志文件到达MAX_SIZE时的操作。

$outchannel NAME, FILE_NAME, MAX_SIZE, ACTION

在规则中使用输出频道按照如下的格式:

selectors :omfile:$NAME

 

3. demo

#include <stdio.h>
#include <stdlib.h>
#include <syslog.h>int main()
{openlog("msg-lyh", LOG_PID, LOG_LOCAL0);syslog(LOG_INFO, "this is a test");closelog();return 0;
}

在/etc/rsyslog.conf中增加。

#
# Save message to other file
#
local0.*    /var/log/lyh.log

注:需要sudo service rsyslog restart 重启服务,配置才能生效

 

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/wp3gEX63.shtml

相关文章

rsyslog日志服务详解

rsyslog日志服务详解 原文出处&#xff1a;http://blog.51cto.com/6638225/1862902 内容&#xff1a; 1、rsyslog日志服务简介 2、rsyslog的配置详解 3、实现日志服务器收集日志及last、lastb、dmseg命令的使用 4、实现日志存储在mysql中 一、rsyslog日志服务简介 ​ 日…

【Linux】rsyslog日志服务(配置,测试、日志转储)

一、rsyslog简介 Rsyslog的全称是 rocket-fast system for log ,可用于接受来自各种来源的输入&#xff0c;转换 它们&#xff0c;并将结果输出到不同的目的地。 它提供了高性能、强大的安全功能和模块化设计。虽然rsyslog最初是一个常规的系 统日志&#xff0c;但它已经发展…

Linux原生日志系统Rsyslog详解

一、概述 Rsyslog 是一个 syslogd 的多线程增强版&#xff0c;依然基于Syslog协议&#xff08;linux6之前默认使用syslog程序&#xff0c;centos6用rsyslog所取代&#xff09;完成系统日志的处理转发&#xff0c;官方形容它是一个极速&#xff08;如火箭般快速&#xff09;的日…

N皇后问题-回溯法-C语言

关于对N皇后问题和回溯法的理解 个人非常推荐下面这个视频&#xff1a;算法与数据结构&#xff0c;回溯法求解八皇后&#xff0c;最经典的递归问题_哔哩哔哩_bilibili八皇后问题是计算机科学中最为经典的问题之一&#xff0c;该问题由国际西洋棋棋手马克斯贝瑟尔于1848年提出。…

Java——N皇后问题

题目链接 leetcode在线oj题——N皇后 题目描述 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff…

N 皇后问题

n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案&#xff0c;该方案中 Q 和 . 分别代表了皇后和…

N皇后问题(C++)

n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n&#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n。 输出…

回溯法求解n皇后问题

一、实验目的 1&#xff0e;掌握能用回溯法求解的问题应满足的条件&#xff1b; 2&#xff0e;加深对回溯法算法设计方法的理解与应用&#xff1b; 3&#xff0e;锻炼学生对程序跟踪调试能力&#xff1b; 4&#xff0e;通过本次实验的练习培养学生应用所学知识解决实际问题的能…

N皇后问题(java)

n皇后问题是一个以国际象棋为背景的问题&#xff1a;在nn的国际象棋棋盘上放置n个皇后&#xff0c;使得任何一个皇后都无法直接吃掉其他的皇后&#xff0c;即任意两个皇后都不能处于同一条横行、纵行或斜线上。 我们通过回溯的方法将所有可能的情况遍历一遍 假设现在有一个4*4…

N皇后问题(Python实现)

n 皇后问题研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 也就是说&#xff1a;存在一个N*N的棋盘&#xff0c;要放N个棋子&#xff0c;每个棋子不同行&#xff0c;不同列&#xff0c;不同&#xff08;正反&#xff09;对角线&…

数据结构之N皇后问题(C语言)

一、N皇后问题的概念 n 皇后问题&#xff0c;研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 一个皇后可以向水平、垂直以及向斜对角方向移动&#xff0c;如果一个皇后出现在另一个皇后的同一行&#xff0c;同一列或者斜对角&#x…

n皇后问题 C++

先上代码&#xff01; #include<iostream> using namespace std;const int N 20;int n; bool row[N],col[N], dg[N], udg[N]; char g[N][N];void dfs(int x, int y, int z) {if (y n) y 0, x; //判断y是否已经抵达边界&#xff0c;抵达后&#xff0c;x1进行下一行if …

回溯法-N皇后问题

一、N皇后问题 n皇后问题&#xff1a;要求在一个nn的棋盘上放置n个皇后&#xff0c;使得任意两个皇后不在同一行或同一列或同一斜线上。 二、回溯法 回溯法是一类非常重要的算法设计方法&#xff0c;有“通用解题法”之称。 回溯法&#xff08;探索与回溯法&#xff09;&am…

(新手向)N皇后问题详解(DFS算法)

非常经典的一道题&#xff1a; N皇后问题&#xff1a; 国际象棋中皇后的势力范围覆盖其所在的行、列以及两条对角线&#xff0c;现在考察如下问题&#xff1a;如何在n x n的棋盘上放置n个皇后&#xff0c;使得她们彼此互不攻击 。 免去麻烦我们这里假定n不是很大。。 &#…

n皇后问题-c语言实现

n皇后问题描述为:在一个nxn的棋盘上摆放n个皇后&#xff0c;要求任意两个皇后不能冲突&#xff0c;即任意两个皇后不在同一行、同一列或者同一斜线上。 1,1 1,2 1,3 1,4 2,1 2,2 2,3 2,4 3,1 3,2 3,3 3,4 4,1 4,2 4,3 4,4 上面是4皇后摆放方案&#xff0c;只有…

n皇后问题合集

八皇后问题是dfs的经典问题&#xff0c;目前遇到过的类型大致有这么几种&#xff1a; 1.经典n皇后问题 题目描述 n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 …

N皇后问题(c语言实现)

问题描述&#xff1a; 有一个n*n的棋盘&#xff0c;在这个棋盘中放n个皇后&#xff0c;使得这n个皇后&#xff0c;任意两个皇后不在同一行&#xff0c;同一列&#xff0c;同一条对角线。例如&#xff0c;当n等于4时&#xff0c;有两种摆法。 输入只有一个整数n。 思路 如果…

N皇后问题

问题描述 n 皇后问题研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。 给定一个整数 n&#xff0c;返回所有不同的 n 皇后问题的解决方案。 每一种解法包含一个明确的 n 皇后问题的棋子放置方案&#…

回溯算法之N皇后问题

问题描述 什么是皇后问题(有一定了解可以直接跳过这个部分看求解部分哦) 八皇后问题&#xff08;英文&#xff1a;Eight queens&#xff09;&#xff0c;是由国际西洋棋棋手马克斯贝瑟尔于1848年提出的问题&#xff0c;是回溯算法的典型案例。 问题表述为&#xff1a;在88格的…

N皇后问题(分支限界法)

问题描述&#xff1a; 在 n * n 格的棋盘上放置彼此不受攻击的 n 个皇后。按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题等价于在 n * n 的棋盘上放置 n 个皇后&#xff0c;任何 2个皇后不放在同一行或同一列或同一斜线上…