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中sets模块的用法实例
Sep 30 Python
使用Python脚本来控制Windows Azure的简单教程
Apr 16 Python
Python生成随机验证码的两种方法
Dec 22 Python
Python环境变量设置方法
Aug 28 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
python实现拓扑排序的基本教程
Mar 11 Python
django主动抛出403异常的方法详解
Jan 04 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
Python实现基于socket的udp传输与接收功能详解
Nov 15 Python
python保留小数位的三种实现方法
Jan 07 Python
python实现简单区块链结构
Apr 25 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
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
页面中iframe相互传值传参
2009/12/13 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
JQUERY获取form表单值的代码
2010/07/17 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
jQuery给表格添加分页效果
2017/03/02 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
2020/05/25 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
技术经理的自我评价范文
2013/12/03 职场文书
爱与责任演讲稿
2014/05/20 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
德劲DE1108畅想
2021/04/22 无线电
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
sass 常用备忘案例详解
2021/09/15 HTML / CSS
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers