python3使用logging包,如何把日志写到系统的rsyslog中

 更新时间:2023年09月06日 09:10:35   作者:微笑永恒-  
这篇文章主要介绍了python3使用logging包,如何把日志写到系统的rsyslog中的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

使用logging包,把日志写到系统的rsyslog中

最近要写一个python程序写日志到rsyslog中,并通过配置rsyslog的文件来将他存到一个指定文件中。

首先,我想来看看logging提供的常用模块:

logger

logger主要是用来配置和发送日志消息的。

可通过logging.getLogger(name)来返回一个logger对象。

不指定name就默认为root。

这里可以取一个合适的名字。

相同的name会返回同一个logger对象。

在Formatter方法中用%(name)s在日志中打印出这个name。

例如:

log = logging.getLogger('mylog')
log_format = logging.Formatter(
    'hhl-%(name)s-server[%(process)d]-%(levelname)s: %(message)s')
#打印结果示例:
#Aug  2 12:44:41 [localhost] hhl-mylog-server[7409]-DEBUG: debug message

handler

将日志记录发送到目的地,如文件,socket等。

这里可以通过addHandler方法添加多个handler,可以实现日志的分级过滤。

如果要把日志发送到rsyslog中,就可以采用SysLogHandler(),使用这个方法前需要导入他

from logging.handlers import SysLogHandler

这个方法有两个参数、一个是rsyslog中的facility:指定的是发送的设备,如kernel,mail,system等等,他还有local0-local7预留。

这里我采用local5。

还有一个参数指定的是log程序的地址,在centos7上默认是/dev/log。

示例如下:

log_hdlr=SysLogHandler(facility=SysLogHandler.LOG_LOCAL5, address='/dev/log')

对应的rsyslog设置文件(/etc/rsyslog.conf):

local5.*						/var/log/all.log
#将local5的所有日志存入all.log文件中

如果想用handler对日志信息进行过滤

可以这样:

log_hdlr.setLevel(logging.ERROR)
#这里就指定了接收error以及更高级别的日志

formatter

指定日志的输出格式,包括消息格式和日期字符格式

例如:

log_format = logging.Formatter(
    'hhl-%(name)s-server[%(process)d]-%(levelname)s: %(message)s')
#输出示例
#Aug  2 12:44:41 [localhost] hhl-mylog-server[7409]-DEBUG: debug message

formatter可调用参数有:

  • %(name)sLogger的名字
  • %(levelname)s文本形式的日志级别
  • %(message)s用户输出的消息
  • %(asctime)s字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
  • %(levelno)s数字形式的日志级别
  • %(pathname)s调用日志输出函数的模块的完整路径名,可能没有
  • %(filename)s调用日志输出函数的模块的文件名
  • %(module)s 调用日志输出函数的模块名
  • %(funcName)s调用日志输出函数的函数名
  • %(lineno)d调用日志输出函数的语句所在的代码行
  • %(created)f当前时间,用UNIX标准的表示时间的浮 点数表示
  • %(relativeCreated)d输出日志信息时的,自Logger创建以 来的毫秒数
  • %(thread)d线程ID。可能没有
  • %(threadName)s线程名。可能没有
  • %(process)d进程ID。可能没有

由上面的这些模块就可以实现我想要的功能啦

将日志写入到all.log文件中-----

源代码

import logging
from logging.handlers import SysLogHandler
log = logging.getLogger('mylog')
log.setLevel(logging.DEBUG)
log_hdlr=SysLogHandler(facility=SysLogHandler.LOG_LOCAL5, address='/dev/log')
log_format = logging.Formatter(
    'hhl-%(name)s-server[%(process)d]-%(levelname)s: %(message)s')
log_hdlr.setFormatter(log_format)
log_hdlr.setLevel(logging.ERROR)#接受error及以上的日志信息
log.addHandler(log_hdlr)
log.debug('debug message test')#指明级别为debug
log.error('error message test')#指明级别为error
#最后只保存error及更高优先级的日志

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python调试神器之PySnooper的使用教程分享

    Python调试神器之PySnooper的使用教程分享

    对于每个程序开发者来说,调试几乎是必备技能。本文小编就来给大家介绍一款非常好用的调试工具,它能在一些场景下,大幅度提高调试的效率, 那就是 PySnooper,希望大家喜欢
    2023-02-02
  • selenium判断元素是否存在的两种方法小结

    selenium判断元素是否存在的两种方法小结

    这篇文章主要介绍了selenium判断元素是否存在的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python光学仿真学习Gauss高斯光束在空间中的分布

    Python光学仿真学习Gauss高斯光束在空间中的分布

    这篇文章主要介绍了Python光学仿真学习中Gauss高斯光束在空间中的分布理解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-10-10
  • python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别详解

    python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别详解

    这篇文章主要介绍了python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python远程开发环境部署与调试过程图解

    Python远程开发环境部署与调试过程图解

    这篇文章主要介绍了Python远程开发环境部署与调试过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • python科学计算之narray对象用法

    python科学计算之narray对象用法

    今天小编就为大家分享一篇python科学计算之narray对象用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python构建深度神经网络(续)

    python构建深度神经网络(续)

    这篇文章主要详细介绍了python构建深度神经网络DNN,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Python编辑和运行的四种方式

    Python编辑和运行的四种方式

    本篇内容主要是讲python在电脑上编辑和运行的几种不同方式,后面主要是在pycharm中去写代码,然后运行,其实还有其他的方式可以在电脑上写python代码和运行python代码,需要的朋友可以参考下
    2024-08-08
  • Python实现二叉树的常见遍历操作总结【7种方法】

    Python实现二叉树的常见遍历操作总结【7种方法】

    这篇文章主要介绍了Python实现二叉树的常见遍历操作,结合实例形式总结分析了二叉树的前序、中序、后序、层次遍历中的迭代与递归等7种操作方法,需要的朋友可以参考下
    2019-03-03
  • Python sys模块常用方法解析

    Python sys模块常用方法解析

    这篇文章主要介绍了Python sys模块常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02

最新评论