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程序设计入门(2)变量类型简介
Jun 16 Python
详解Python3中的Sequence type的使用
Aug 01 Python
Python3中的列表,元组,字典,字符串相关知识小结
Nov 10 Python
好的Python培训机构应该具备哪些条件
May 23 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
Python检查ping终端的方法
Jan 26 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 Python
Python:type、object、class与内置类型实例
Dec 25 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
Python 实现集合Set的示例
Dec 21 Python
教你怎么用python selenium实现自动化测试
May 27 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
一步一步学习PHP(5) 类和对象
2010/02/16 PHP
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
JS DOM 操作实现代码
2010/08/01 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
pyqt4教程之widget使用示例分享
2014/03/07 Python
Python入门必须知道的11个知识点
2018/03/21 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
对Python3 解析html的几种操作方式小结
2019/02/16 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
班级道德讲堂实施方案
2014/02/24 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书