Python中syslog功能代码
参考网址:http://csl.name/py-syslog-win32/
在我们日常工作中,我们需要从Windows系统上发送syslog消息到syslog服务器。下面的代码能够工作的很好。
你能下载syslog.py代码:http://csl.name/py-syslog-win32/syslog.py
#!/usr/bin/python
# -*- encoding: iso-8859-1 -*-
"""
Python syslog client.
This code is placed in the public domain bythe author.
Written by Christian Stigen Larsen.
This is especially neat for Windows users,who (I think) don't
get any syslog module in the default pythoninstallation.
See RFC3164 for more info --http://tools.ietf.org/html/rfc3164
Note that if you intend to send messages toremote servers, their
syslogd must be started with -r to allow toreceive UDP from
the network.
"""
import socket
# I'm a python novice, so I don't know ofbetter ways to define enums
FACILITY = {
'kern':0, 'user': 1, 'mail': 2, 'daemon': 3,
'auth':4, 'syslog': 5, 'lpr': 6, 'news': 7,
'uucp':8, 'cron': 9, 'authpriv': 10, 'ftp': 11,
'local0':16, 'local1': 17, 'local2': 18, 'local3': 19,
'local4':20, 'local5': 21, 'local6': 22, 'local7': 23,
}
LEVEL = {
'emerg':0, 'alert':1, 'crit': 2, 'err': 3,
'warning':4, 'notice': 5, 'info': 6, 'debug': 7
}
def syslog(message, level=LEVEL['notice'],facility=FACILITY['daemon'],
host='localhost',port=514):
"""
Sendsyslog UDP packet to given host and port.
"""
sock= socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data= '<%d>%s' % (level + facility*8, message)
sock.sendto(data,(host, port))
sock.close()
示例用法:
from syslog import syslog
syslog('There were zwei peanuts walking downder strasse...', host='brit.ain')
为了让它工作,你必须确保syslog服务接收远程消息。你能通过使用-r选项启动syslogd。
我也喜欢Pyton docstring有多么的好,例如:
$ python
Python 2.5.1 (r251:54863, Apr 18 2007,08:51:08) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright","credits" or "license" for more information.
>>> import syslog
>>> help(syslog)
Help on module syslog:
NAME
syslog - Python syslog client.
FILE
c:\documents and settings\csl\jall\syslog.py
DESCRIPTION
This code is placed in the public domain by the author.
Written by Christian Stigen Larsen.
This is especially neat for Windows users, who (I think) don't
getany syslog module in the default python installation.
SeeRFC3164 for more info -- http://tools.ietf.org/html/rfc3164
Note that if you intend to send messages to remote servers, their
syslogd must be started with -r to allow to receive UDP from
thenetwork.
FUNCTIONS
syslog(message, level=5, facility=3, host='localhost', port=514)
Send syslog UDP packet to given host and port.
DATA
FACILITY = {'auth': 4, 'authpriv': 10, 'cron': 9, 'daemon': 3, 'ftp':...
LEVEL = {'alert': 1, 'crit': 2, 'debug': 7, 'emerg': 0, 'err': 3,'inf...
>>>
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341