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中的对象与类型
Dec 11 Python
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
python快速建立超简单的web服务器的实现方法
Feb 17 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
python实现将汉字保存成文本的方法
Nov 16 Python
python批量修改文件夹及其子文件夹下的文件内容
Mar 15 Python
Python通用函数实现数组计算的方法
Jun 13 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
解决python3插入mysql时内容带有引号的问题
Mar 02 Python
python批量更改目录名/文件名的方法
Apr 18 Python
Python中22个万用公式的小结
Jul 21 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
无线电的诞生过程
2021/03/01 无线电
浅析SVN常见问题及解决方法
2013/06/21 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
nodejs简单实现中英文翻译
2015/05/04 NodeJs
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
微信小程序获取当前位置和城市名
2019/11/13 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
2019/04/29 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Python内置函数locals和globals对比
2020/04/28 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
个人简历自我鉴定
2013/10/11 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
人事任命通知
2015/04/20 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang