Python日志syslog使用原理详解


Posted in Python onFebruary 18, 2020

这篇文章主要介绍了Python日志syslog使用原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

syslog的官方说明在:

https://docs.python.org/2/library/syslog.html#module-syslog

该模块的主要方式为:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import syslog
syslog.openlog([ident[, logoption[, facility]]])
syslog.syslog(priority, message)
syslog.closelog()

ident 的信息为 /bluedon/test.py

logoption 的信息为 [4642]

facility 的信息为 记录日志文件的位置 ,本文选取的 facility = syslog.LOG_USER ,即日志输出在 /var/log/messages

Python日志syslog使用原理详解

源码为:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import syslog
import os

if __name__ == '__main__':
  # https://docs.python.org/2/library/syslog.html
  # syslog.openlog([ident[, logoption[, facility]]])

  # ident
  filename = os.path.abspath(__file__)

  # logoption
  # LOG_CONS:如果将信息发送给守护进程时发生错误,直接将相关信息输入到相关信息输出到终端。 
  # LOG_NDELAY:立即打开与系统日志的连接(通常情况下,只有在产生第一条日志信息的情况下才会打开与日志系统的连接) 
  # LOG_NOWAIT:在记录日志信息时,不等待可能的子进程的创建 
  # LOG_ODELAY:类似于LOG_NDELAY参数,与系统日志的连接只有在syslog函数调用时才会创建 
  # LOG_PID:每条日志信息中都包括进程号
  # LOG_PID, LOG_CONS, LOG_NDELAY, LOG_NOWAIT, LOG_PERROR
  pid = syslog.LOG_PID

  # facility
  # LOG_KERN, LOG_USER, LOG_MAIL, LOG_DAEMON, LOG_AUTH, LOG_LPR, LOG_NEWS, LOG_UUCP, LOG_CRON, LOG_SYSLOG, LOG_LOCAL0 to LOG_LOCAL7
  filepath = syslog.LOG_USER

  # Priority
  # LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG
  level = syslog.LOG_NOTICE

  # messages
  messages = "test start14"

  # syslog.openlog([ident[, logoption[, facility]]])
  syslog.openlog(filename, pid, filepath)
  # syslog.syslog(priority, message)
  syslog.syslog(level, messages)
  # close syslog
  syslog.closelog()
  
  # vim var/log/message
  # tail -f /tmp/syslog.txt

在不同机器上面查看结果:

Python日志syslog使用原理详解

Python日志syslog使用原理详解

将其写成了类

#!/usr/bin/python
# -*- coding: utf-8 -*-
import syslog


class mysyslog(object):
  # level
  # LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG
  debug = syslog.LOG_DEBUG
  info = syslog.LOG_INFO
  notice = syslog.LOG_NOTICE
  warning = syslog.LOG_WARNING
  err = syslog.LOG_ERR
  crit = syslog.LOG_CRIT
  alert = syslog.LOG_ALERT
  emerg = syslog.LOG_EMERG

  # logoption
  # LOG_PID, LOG_CONS, LOG_NDELAY, LOG_NOWAIT, LOG_PERROR
  # LOG_CONS:如果将信息发送给守护进程时发生错误,直接将相关信息输入到相关信息输出到终端。
  # LOG_NDELAY:立即打开与系统日志的连接(通常情况下,只有在产生第一条日志信息的情况下才会打开与日志系统的连接)
  # LOG_NOWAIT:在记录日志信息时,不等待可能的子进程的创建
  # LOG_ODELAY:类似于LOG_NDELAY参数,与系统日志的连接只有在syslog函数调用时才会创建
  # LOG_PID:每条日志信息中都包括进程号
  cons = syslog.LOG_CONS
  ndelay = syslog.LOG_NDELAY
  nowait = syslog.LOG_NOWAIT
  pid = syslog.LOG_PID

  # facility
  # LOG_KERN, LOG_USER, LOG_MAIL, LOG_DAEMON, LOG_AUTH, LOG_LPR, LOG_NEWS, LOG_UUCP, LOG_CRON, LOG_SYSLOG, LOG_LOCAL0 to LOG_LOCAL7
  # kern = syslog.LOG_KERN
  # user = syslog.LOG_USER
  # mail = syslog.LOG_MAIL
  # daemon = syslog.LOG_DAEMON
  # auth = syslog.LOG_AUTH
  # lpr = syslog.LOG_LPR
  # news = syslog.LOG_NEWS
  # uucp = syslog.LOG_UUCP
  # cron = syslog.LOG_CRON
  # _syslog = syslog.LOG_SYSLOG

  @classmethod
  def __init__(self):
    pass

  @staticmethod
  def basicConfig(name, logoption):
    facility = syslog.LOG_USER
    syslog.openlog(name, logoption, facility)

  @staticmethod
  def tosyslog(level, ip, messages):
    newmessages = "[" + ip + "]" + " " + messages
    syslog.syslog(level, newmessages)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 调用VC++的动态链接库(DLL)
Sep 06 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
Python编程实现的图片识别功能示例
Aug 03 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
Python中format()格式输出全解
Apr 12 Python
Django REST framework 分页的实现代码
Jun 19 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
Python中使用gflags实例及原理解析
Dec 13 Python
Python实现点云投影到平面显示
Jan 18 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
python 监控logcat关键字功能
Sep 04 Python
Pytorch中.new()的作用详解
Feb 18 #Python
Pytorch maxpool的ceil_mode用法
Feb 18 #Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 #Python
Python3的socket使用方法详解
Feb 18 #Python
Python批量启动多线程代码实例
Feb 18 #Python
基于pytorch padding=SAME的解决方式
Feb 18 #Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 #Python
You might like
解析thinkphp中的导入文件标签
2013/06/20 PHP
php去除数组中重复数据
2014/11/18 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
jquery获取radio值实例
2014/10/16 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
使用python生成目录树
2018/03/29 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
彩色的翅膀教学反思
2014/04/25 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
人事任命书范文
2014/06/04 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
企业务虚会发言材料
2014/10/20 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
会计工作态度自我评价
2015/03/06 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
青涩记忆观后感
2015/06/18 职场文书
三八妇女节致辞
2015/07/31 职场文书
2019年大学推荐信
2019/06/24 职场文书
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android