linux log 日志

本文介绍了Linux系统中的日志管理,包括printk的级别控制,rsyslog的配置,如日志文件路径和属性筛选,以及systemd-journald的系统配置,如存储类型、日志文件大小限制和logrotate策略。此外,还讨论了自定义用户日志和远程日志的发送与接收方法。
摘要由CSDN通过智能技术生成

一:printk

  1. 数字越小级别越高
    在这里插入图片描述
  2. 打印方式:
printk(KERN_EMERG " KERN_EMERG\n");
printk(KERN_ALERT " KERN_ALERT\n");
printk(KERN_CRIT " KERN_CRIT\n");
printk(KERN_ERR " KERN_ERR\n");
printk(KERN_WARNING " KERN_WARNING\n");
printk(KERN_NOTICE " KERN_NOTICE\n");
printk(KERN_INFO " KERN_INFO\n");
printk(KERN_DEBUG " KERN_DEBUG\n");
printk(" no_fix\n");
  1. printk打印消息控制
    在这里插入图片描述
    console_loglevel:只有当printk打印消息的log优先级高于console_loglevel时,才能输出到终端上
    default_message_loglevel:printk打印消息时默认的log等级
    minimum_console_loglevel:console_loglevel可以被设置的最小值
    default_console_loglevel:console_loglevel的缺省值

  2. printk消息等级查看与修改

  3. 查看

    cat /proc/sys/kernel/printk
    # 7 4 1 7
    
  4. 修改

    echo 8 4 1 7 > /proc/sys/kernel/printk
    

二:rsyslog

配置文件

在这里插入图片描述
配置dmesg信息保存路径

属性筛选

三:systemd-journald系统

配置文件

# /etc/systemd/journald.conf
[Journal]
Storage=auto
Compress=yes # 默认值"yes"表示 
			 # 压缩存储大于特定阈值(默认为512字节)的对象
			 # 也可以直接设置一个 字节值(可以带有 K, M, G 后缀) 表示的阈值, 
			 # 表示压缩存储 大于指定阈值的对象。
#Seal=yes # 默认值"yes".
          # 如果存在一个"sealing key",由 journalctl(1) 的 --setup-keys 命令创建
          # 那么就为所有持久保存的日志文件启用 FSS(Seekable Sequential Key Generators)保护
          # 以避免日志文件 被恶意或无意的修改
#SplitMode=uid #设置是否按照每个用户分割日志文件,以实现对日志的访问控制
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s #限制日志的生成速率
#RateLimitBurst=10000
#SystemMaxUse=256M
#SystemKeepFree=
#SystemMaxFileSize=50M
#SystemMaxFiles=100
#RuntimeMaxUse=128M
#RuntimeKeepFree=
#RuntimeMaxFileSize=50M
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K
#ReadKMsg=yes
#Audit=yes

Journald支持的不同类型的存储

Storage

  1. volatile,则日志数据将仅存储在内存中,即在/run/log/journal目录下(根据需要创建)
  2. persistent,则数据将会存储在磁盘上,即/var/log/journal目录下,并且在早期引导阶段磁盘不可写的时候把数据保存到/run/log/journal目录下
  3. auto值意味着把日志数据存储在/var/log/journal/目录中。但是该目录必须已经存在并且设置了适当的权限。如果不存在,则日记数据将存储在易失性/run/log/journal/目录中,并且在系统关闭时会删除该数据
  4. none关闭所有存储,所有接收到的日志数据将被丢弃

对日志文件执行logrotate

  1. 对日志文件执行logroate
#SystemMaxUse=256M #控制日志最大可使用多少磁盘空间,然后对日志文件执行systemd-journald logrotate。默认为分配给节点的总物理内存的10%
#SystemKeepFree= #控制systemd-journald将为其他用途保留多少磁盘空间,之后将对日志文件执行systemd-journald logrotate。默认为分配给节点
				 #的总物理内存的15%
#SystemMaxFileSize=50M #限制单个日志文件的最大体积,到达此限制后日志文件将会自动滚动,默认值是对应的 SystemMaxUse=/RuntimeMaxUse= 值
					   #的1/8,这也意味着日志滚动 默认保留7个历史文件
#SystemMaxFiles=100
#RuntimeMaxUse=128M #控制日志最大可使用多少磁盘空间,然后对日志文件执行systemd-journald logrotate。默认为分配给节点的总物理内存的10%
#RuntimeKeepFree= #控制systemd-journald将为其他用途保留多少磁盘空间,之后将对日志文件执行systemd-journald logrotate。默认为分配给节
				  #点的总物理内存的15%
#RuntimeMaxFileSize=50M #限制单个日志文件的最大体积,到达此限制后日志文件将会自动滚动,默认值是对应的 SystemMaxUse=/RuntimeMaxUse= 值			
						#的1/8,这也意味着日志滚动 默认保留7个历史文件
#RuntimeMaxFiles=100 #限制最多允许同时存在多少个日志文件, 超出此限制后, 最老的日志文件将被删除, 而当前的活动日志文件 则不受影响。 默认值
					 #为100个
#MaxRetentionSec= #日志滚动的时间间隔
#MaxFileSec=1month #日志文件的最大保留期限

System开头的选项用于限制磁盘使用量, 也就是 /var/log/journal 的使用量
Runtime开头的选项用于限制内存使用量, 也就是 /run/log/journal 的使用量

自定义用户日志

syslog方法
在这里插入图片描述

  1. openlog
/**
 * @brief 
 * 
 * @param __ident 用来表示信息的来源,ident信息会被固定地添加在每行日志的前面
 * @param __option 控制标志
 *  	  #define LOG_PID         0x01    /* log the pid with each message */
 * 		  #define LOG_CONS        0x02    /* log on the console if errors in sending */
 * 		  #define LOG_ODELAY      0x04    /* delay open until first syslog() (default) */
 * 		  #define LOG_NDELAY      0x08    /* don't delay open */
 * 		  #define LOG_NOWAIT      0x10    /* don't wait for console forks: DEPRECATED */
 * 		  #define LOG_PERROR      0x20    /* log to stderr as well */
 * @param __facility 
 *        #define LOG_KERN        (0<<3)  /* kernel messages */
 *        #define LOG_USER        (1<<3)  /* random user-level messages */
 *        #define LOG_MAIL        (2<<3)  /* mail system */
 *        #define LOG_DAEMON      (3<<3)  /* system daemons */
 *        #define LOG_AUTH        (4<<3)  /* security/authorization messages */
 *        #define LOG_SYSLOG      (5<<3)  /* messages generated internally by syslogd */
 *        #define LOG_LPR         (6<<3)  /* line printer subsystem */
 *        #define LOG_NEWS        (7<<3)  /* network news subsystem */
 *        #define LOG_UUCP        (8<<3)  /* UUCP subsystem */
 *        #define LOG_CRON        (9<<3)  /* clock daemon */
 *        #define LOG_AUTHPRIV    (10<<3) /* security/authorization messages (private) */
 *        #define LOG_FTP         (11<<3) /* ftp daemon */
 *        #define LOG_LOCAL0      (16<<3) /* reserved for local use */
 *        #define LOG_LOCAL1      (17<<3) /* reserved for local use */
 *        #define LOG_LOCAL2      (18<<3) /* reserved for local use */
 *        #define LOG_LOCAL3      (19<<3) /* reserved for local use */
 *        #define LOG_LOCAL4      (20<<3) /* reserved for local use */
 *        #define LOG_LOCAL5      (21<<3) /* reserved for local use */
 *        #define LOG_LOCAL6      (22<<3) /* reserved for local use */
 *        #define LOG_LOCAL7      (23<<3) /* reserved for local use */
 */
extern void openlog (const char *__ident, int __option, int __facility);
  1. syslog
/**
 * @brief Generate a log message using FMT string and option arguments.
 *          This function is a possible cancellation point and therefore not
 *          marked with __THROW.
 * @__pri 
 * #define LOG_EMERG       0       /* system is unusable */
 * #define LOG_ALERT       1       /* action must be taken immediately */
 * #define LOG_CRIT        2       /* critical conditions */
 * #define LOG_ERR         3       /* error conditions */
 * #define LOG_WARNING     4       /* warning conditions */
 * #define LOG_NOTICE      5       /* normal but significant condition */
 * #define LOG_INFO        6       /* informational */
 * #define LOG_DEBUG       7       /* debug-level messages */
 */
extern void syslog (int __pri, const char *__fmt, ...)__attribute__ ((__format__ (__printf__, 2, 3)));
  1. closelog

远程发送和接收日志

  1. 服务端配置
    在这里插入图片描述
    在这里插入图片描述

  2. 客户端配置
    在这里插入图片描述
    一个@标识udp,两个@@标识tcp

四:登录相关日志

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值