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实现划词翻译
Apr 23 Python
跟老齐学Python之赋值,简单也不简单
Sep 24 Python
python+pyqt实现12306图片验证效果
Oct 25 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
ubuntu 16.04下python版本切换的方法
Jun 14 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
Python log模块logging记录打印用法解析
Jan 20 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
python 8种必备的gui库
Aug 27 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 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关联模型操作实例分析
2012/09/23 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
php计算title标题相似比的方法
2015/07/29 PHP
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
python正则实现提取电话功能
2018/02/24 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
浅谈django orm 优化
2018/08/18 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
应聘自荐书
2013/10/08 职场文书
优良学风班总结材料
2014/02/08 职场文书
小学少先队活动方案
2014/02/18 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
自我评价优缺点范文
2015/03/11 职场文书
2015大学迎新标语
2015/07/16 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python