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操作mongodb根据_id查询数据的实现方法
May 20 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
Apr 25 Python
django反向解析URL和URL命名空间的方法
Jun 05 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
Python 绘制酷炫的三维图步骤详解
Jul 12 Python
Python tornado上传文件的功能
Mar 26 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 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制作静态网站的模板框架
2006/10/09 PHP
PHP 转义使用详解
2013/07/15 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
13个PHP函数超实用
2015/10/21 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
微信公众号服务器验证Token步骤图解
2019/12/30 Javascript
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
Python批量生成特定尺寸图片及图画任意文字的实例
2019/01/30 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
宠物店的创业计划书范文
2014/01/11 职场文书
保护环境标语
2014/06/09 职场文书
药品营销策划方案
2014/06/15 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
给老婆道歉的话
2015/01/20 职场文书
实习介绍信范文
2015/05/05 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
pytorch实现ResNet结构的实例代码
2021/05/17 Python
Mysql Online DDL的使用详解
2021/05/20 MySQL