首页IT科技python在线编程 numpy(python之syslog学习 坏男孩 51CTO技术博客)

python在线编程 numpy(python之syslog学习 坏男孩 51CTO技术博客)

时间2025-06-20 17:13:29分类IT科技浏览3696
导读:标签:休闲 python syslog 职场...

标签:休闲 python syslog 职场

原创作品            ,允许转载                  ,转载时请务必以超链接形式标明文章 原始出处             、作者信息和本声明            。否则将追究法律责任                  。http://5ydycm.blog.51cto.com/115934/303046
大家在写程序时      ,都喜欢将过程和输出结果以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!
看到没      ,messagespython.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的配合            。

本文出自 “坏男孩                  ” 博客,请务必保留此出处http://5ydycm.blog.51cto.com/115934/303046

声明:本站所有文章                  ,如无特殊说明或标注                  ,均为本站原创发布                  。任何个人或组织,在未征得本站同意时            ,禁止复制                  、盗用      、采集      、发布本站内容到任何网站                  、书籍等各类媒体平台      。如若本站内容侵犯了原著者的合法权益                  ,可联系我们进行处理      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
Windows已禁用音频设备(Win10已禁用ime是什么意思?) 网站排名的关键——内容质量(掌握这一要素,让你网站飞升)