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统计文件行数示例分享
Feb 21 Python
用Python和MD5实现网站挂马检测程序
Mar 13 Python
用Python实现QQ游戏大家来找茬辅助工具
Sep 14 Python
使用Python编写提取日志中的中文的脚本的方法
Apr 30 Python
Python二分查找详解
Sep 13 Python
Python简单获取自身外网IP的方法
Sep 18 Python
Python正则抓取网易新闻的方法示例
Apr 21 Python
浅谈Python peewee 使用经验
Oct 20 Python
Python实现读取机器硬件信息的方法示例
Jun 09 Python
Python读取mat文件,并保存为pickle格式的方法
Oct 23 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 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连接Oracle for NT 远程数据库
2006/10/09 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
yii2 resetful 授权验证详解
2017/05/18 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
事件模型在各浏览器中存在差异
2010/10/20 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
拖动时防止选中
2017/02/03 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
python分割和拼接字符串
2013/11/01 Python
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
python实现b站直播自动发送弹幕功能
2021/02/20 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
单身旅行者的单身假期:Just You
2018/04/08 全球购物
视图的作用
2014/12/19 面试题
护士实习自我鉴定
2013/10/22 职场文书
化工操作工岗位职责
2014/04/29 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
社团活动总结模板
2014/06/30 职场文书