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记录详细调用堆栈日志的方法
May 05 Python
Python使用xlrd模块操作Excel数据导入的方法
May 26 Python
Python解惑之整数比较详解
Apr 24 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
python中scikit-learn机器代码实例
Aug 05 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
Python中IP地址处理IPy模块的方法
Aug 16 Python
python numpy存取文件的方式
Apr 01 Python
浅谈python的elementtree模块处理中文注意事项
Mar 06 Python
python变量的作用域是什么
May 26 Python
Python小白学习爬虫常用请求报头
Jun 03 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 max_execution_time执行时间问题
2011/07/17 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
PHP代码优化技巧小结
2015/09/29 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
Python中的pprint折腾记
2015/01/21 Python
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
python列表的增删改查实例代码
2018/01/30 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
解决Django中多条件查询的问题
2019/07/18 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
python取均匀不重复的随机数方式
2019/11/27 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
python3.9.1环境安装的方法(图文)
2021/02/02 Python
python FTP编程基础入门
2021/02/27 Python
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
化工专业应届生求职信
2013/11/08 职场文书
小学教师管理制度
2014/01/18 职场文书
西双版纳导游词
2015/02/03 职场文书
工程合作意向书范本
2015/05/09 职场文书