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...

 

 

>>> 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值