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中List.index()方法的使用教程
May 20 Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 Python
python 定时修改数据库的示例代码
Apr 08 Python
Python中使用Counter进行字典创建以及key数量统计的方法
Jul 06 Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 Python
对Xpath 获取子标签下所有文本的方法详解
Jan 02 Python
Django之模板层的实现代码
Sep 09 Python
Python写出新冠状病毒确诊人数地图的方法
Feb 12 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
Python Json数据文件操作原理解析
May 09 Python
Python unittest装饰器实现原理及代码
Sep 08 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 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缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
php中遍历二维数组并以表格的形式输出的方法
2017/01/03 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
Python实现截屏的函数
2015/07/26 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
python调用java的jar包方法
2018/12/15 Python
python清空命令行方式
2020/01/13 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
什么是View State?
2013/01/27 面试题
php优化查询foreach代码实例讲解
2021/03/24 PHP
物流毕业生个人的自我评价
2014/02/13 职场文书
学生保证书
2015/01/16 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
python实现图片批量压缩
2021/04/24 Python
简单介绍Python的第三方库yaml
2021/06/18 Python
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
我去timi了,一起去timi是什么意思?
2022/04/13 杂记