我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python之syslog学习

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python之syslog学习

大家在写程序时,都喜欢将过程和输出结果以log的形式保留下来,供参考。大部分朋友都采取的是open方式打开一个文件句柄方式,将其信息write进去,今天我学习的是采取unix或者类unix提供的一个syslog服务。在我们的python里提供了一个syslog的模块,这个模块就是为系统syslog程序提供的一个接口。

以下我将用通俗的语言和例子来说明下面的函数:

syslog.openlog(ident[, logopt[, facility]])

这个就是初始化syslog接口的函数,在这里有一个必须的参数和两个可选的参数。

第一个参数,ident

这个就是一个标识字符串,是log里每一行中程序的名程,如:

syslog.openlog("test.py")

syslog.syslog("The process is test.py")

tail -n 1 /var/log/messages

Apr 22 16:26:52 databak test.py: The process is test.py

对上了吧?看明白了吧?

第二个参数,logopt

选项名称:LOG_CONS,LOG_NDELAY,LOG_NOWAIT,LOG_PID,LOG_PERROR

大家可以从中选择一个,或者多个(要借助或操作符”|”),如:

Syslog.openlog(“test.py”,syslog.LOG_PID|syslog.LOG_PERROR)

Syslog.syslog(“The messages print pid and messages print to stderr”)

>>> syslog.syslog("The messages print pid and messages print to stderr")

test.py[16826]: The messages print pid and messages print to stderr

[root@databak scripts]# tail -n 1 /var/log/messages

Apr 22 16:33:32 databak test.py[16826]: The messages print pid and messages print to stderr

看到没,它一方面将其直接打印出来,另一方面将日志记录到messages中,并且按要且添加了此进程的pid号

注:LOG_PERROR 错误除了记录到syslog机构中,同时还会在stderr打印出来。

第三个参数,facility

名称:LOG_AUTH,LOG_CRON,LOG_DAEMON,LOG_KERN,LOG_LOCALx,LOG_LPR,LOG_MAIL,LOG_NEWS,LOG_USER,LOG_UUCP

系统管理员使用这些参数配置信息如何分解到不同的文件和服务中。

在前面,我们一直将信息输出到messages文件中,这次,我们要结合syslog.conf的配置来将其输出到其他文件了。

修改syslog.conf,添加

auth.*                                                 /var/log/python.auth

将认证的信息输出到python.auth中,那么我们的程序应该如何写呢?

Syslog.openlog(“test.py”,syslog.LOG_PID,syslog.LOG_AUTH)

Syslog.syslog(“Test Auth!”)

[root@databak scripts]# tail -f /var/log/python.auth

Apr 22 16:43:47 databak test.py[16829]: Test Auth!

[root@databak scripts]# tail -n 1 /var/log/messages

Apr 22 16:43:17 databak test.py[16829]: Test Auth!

看到没,messages和python.auth这两个文件里都有了相关的信息了,怎么回事呢?我想让其只输出到python.auth,不想输出到messages呀?我想是因为我们没有配置syslog的优先权,我们的syslog.syslog默认的优先权是LOG_INFO,自然我们将其内容一方面输出到认证的文件里,一方面又输出到messages文件里了。所以,我们需要修改下syslog.conf的配置,

*.info;*****;auth.none              /var/log/messages        

大家再试下。。。。

这个函数大家明白了吧?接下来,我们看syslog函数

在上面的例子中,syslog函数一直伴随着我们,我相信大家也看到了一点门道了,现在我还是把函数公示给大家吧。

syslog.syslog([priority], message)

这里有两个参数,一个可选一个必写。

Message就不用说了,我的例子都有了,只是要说明下可选参数了。

Priority,

名称:LOG_EMERG,LOG_ALERT,LOG_CRIT,LOG_ERR,LOG_WARNING,LOG_INFO,LOG_DEBUG(默认为LOG_INFO)

我们想将认证错误的信息写到python.err文件中,那么修改syslog.conf

auth.err                                           /var/log/python.err

看程序:

Syslog.openlog(“test.py”,syslog.LOG_PID,syslog.LOG_AUTH)

Syslog.syslog(syslog.LOG_ERR,“Add error information to python.err file”)

结果:

[root@databak ~]# tail -f /var/log/python.err

Apr 22 17:05:00 databak test.py[16933]: Add error information to python.err file

[root@databak ~]# tail -n 1 /var/log/messages

实验成功,那么,我改下优先权看下,看程序:

Syslog.openlog(“test.py”,syslog.LOG_PID,syslog.LOG_AUTH)

Syslog.syslog(syslog.LOG_INFO,“Add info information to python.err file”)

结果:

[root@databak ~]# tail -f /var/log/python.err

[root@databak ~]# tail -n 1 /var/log/messages

两个文件都没有,因为你的程序没有符合任合一个(syslog.conf)的要求,所以信息不会写到任何一个文件中的。

总结:

Openlog,syslog这两个函数并且结合syslog.conf的配置,就能定制出一种很好的日志记录功能。通过openlog的函数,我们就可以将信息分门别类的记录到何种文件下

并采取syslog函数参数便可以将何种服务的级别记录到何种文件下,前提需要syslog.conf的配合。


如果想了解更多,请关注我们的公众号
公众号ID:opdevos
扫码关注

gongzhouhao.jpg

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python之syslog学习

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python之syslog学习

Normal07.8 磅02falsefalsefalseEN-USZH-CNX-NONE table.MsoNormalTable{mso-style-name:普通表格;mso-tstyle
2023-01-31

python之syslog模块

syslog模块为提供了rsyslog模块的一个接口。可以记录程序运行时的输出信息。个人认为此方法没有logging模块方便常用方法如下:syslog.open(indent[,logopt[,facility]])  ####初始化rsy
2023-01-31

python学习之--习题集

1.什么是PVM?pvm是python的虚拟机,它是python运行时引擎解释编译得到的代码
2023-01-31

Python学习之------retry

在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理。原先的流程:def crawl_page(url): passdef log_error(url): passurl =
2023-01-31

python学习之pandas

#Pandas'''1,Pandas是Python的一个数据分析报包,该工具为解决数据分析任务而创建。2,Pandas纳入大量库和标准数据模型,提供搞笑的操作数据集所需的工具3.pandas提供大量能使我们快速便捷地处理数据的1函数方法4,
2023-01-31

python学习之道

2018/3/16开始学习python这门语言的第一天,我的职业是网络工程师,数通无线安全方向,因为对技术比较喜欢,所以在工作之余会学习一些高端的技术,比如:虚拟化,存储之类的,现在网络工程师已经越来越多了,而且传统技术是过不了多少年的,所
2023-01-31

Python 学习之路 - Python

一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
Python 学习之路 - Python
2023-01-31

python 学习之 PythonAdv

#!/usr/bin/python#coding=utf-8#词典'''nl = [1, 3, 8]nl.append(15)print nlbl = [2, 3, 5]print nl + bldic = {'tom': 11, 'sam
2023-01-31

Python学习之property

Python中使用Property函数可以将类中的函数当作属性来调用。案例 1 __metaclass__=type 2 class Rectangle: 3 def __init__(self): 4 self.w
2023-01-30

python学习之---mutable

python的数据类型分为mutable(可变) 和 immutable (不可变)mutable : list ,dictinmutable : int , string , float ,tuple...mutable和immutabl
2023-01-31

python学习之路

第一部分    使用入门1、人们选择python的六个主要原因是什么?①软件质量、开发者的效率、程序的可移植性、标准库的支持、组件集成和享受简便,其中质量和效率是选择python的主要原因。2、请列举正在使用python的四个著名公司的名字
2023-01-31

Python学习之类

前言:之前写的博客,都是借鉴别的博文或者是环境的配置,没有自己的东西,掌握的很少。以后的博文,我都会尽力加上一些自己的东西。现在开始进入我的python世界吧!为什么要有类:在面向对象编程中,你要通过类来创建对象。通过类你可以对对象进行定义
2023-01-31

Python学习之List

**Python的列表可以存儲任何數據類型,包括列表本身。它是通過索引訪問。**Python的索引值是從0開始的,以些類推**Python是通過中括號來包含所有的值,值與值之間通過","號分隔**查看python列表的擁有哪些方法,可以通過
2023-01-31

python学习之matplot

import matplotlib.pyplot as pltimport numpy as npimport pandas as pdfrom mpl_toolkits.mplot3d import Axes3Dimport matp
2023-01-31

Python学习之初识Python

Python作为一种面向对象,解释型的程序语言。拥有简洁(通过缩进来区别不同的语句块),丰富强大的库。可以将多个模块导入使用的特性又被称之为脱水语言。Django可作为Python的Web开发框架语句块:   Python通过相同的缩进来确
2023-01-31

python学习之路—day1

变量:存储信息,日后被调用、修改操作.常量:固定不变的量,字母大小写。命名规则:1,、字母数字下划线组成2、命名具有代表意义的3、不能以数字开头,特殊符号开头4、不能以保留字命名,lg:for等5、命名一般不以中文命名6、命名一般以驼峰体形
2023-01-30

python学习之元组

在python中,元组使用小括号,小括号的元素使用逗号隔开即可;1.元组和列表的区别元组和列表的相同点就是都是序列类型的容器对象,可以存放任何类型的数据,支持切片,迭代操作等;元组和列表的不同点是元组是不可变类型,大小固定,而列表是可变类型
2023-01-31

python的学习之旅

首先先介绍下本人,本人名叫杜邱,别名也叫故都的秋,网络工程专业毕业,现就职一家电子商务公司,已经三年了,起初从一个小小的网管做起,一台路由器,一台交换机,下面连着50几台电脑,三年过去了,慢慢的也在成长,装过监控,管过服务器,弄过网络,杀过
2023-01-31

python之_requests库学习_

一、超时 可以告诉 requests 在经过以 timeout 参数设定的秒数时间之后停止等待响应。 连接超时指的是在你的客户端实现到远端机器端口的连接时Request 会等待的秒数。一个很好的实践方法是把连接超时设为比 3 的倍数略大的一
2023-01-30

Python学习之初识

第一章1.1 typora 的安装与使用1.1.1 标题的创建:方法一:用 ###+空格 表示标题,几个#就是几级标题方法二:菜单栏——》段落——》选择标题1.1.2 有序列表与无序列表菜单栏——》段落——》可以选择有序列表or无序列表or
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录