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字典多键值及重复键值的使用方法(详解)
Oct 31 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Python文件操作基本流程代码实例
Dec 11 Python
Python tkinter的grid布局及Text动态显示方法
Oct 11 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
Python使用修饰器进行异常日志记录操作示例
Mar 19 Python
基于Python打造账号共享浏览器功能
May 30 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
Sep 23 Python
python collections模块的使用
Oct 16 Python
基于Python模拟浏览器发送http请求
Nov 06 Python
深入浅析Django MTV模式
Sep 04 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
一个用于网络的工具函数库
2006/10/09 PHP
php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
2011/01/07 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
浅谈Fetch 数据交互方式
2018/12/20 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
python通过zabbix api获取主机
2018/09/17 Python
Django框架封装外部函数示例
2019/05/28 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
电厂厂长岗位职责
2014/01/02 职场文书
医德医魂心得体会
2014/09/11 职场文书
学风建设演讲稿
2014/09/12 职场文书
店长岗位职责
2015/02/11 职场文书
民间借贷纠纷答辩状
2015/08/03 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android