上從Python登錄到系統日誌我在這裏跟隨了幾個答案,因此無濟於事。我如何使用SysLogHandler或Syslog在Mac OS X *和* Debian(7)
我在Macbook(Yosemite)上開發,但我們的測試/生產框是Debian 7(使用rsyslog)。我試圖以本地和非本地方式登錄syslog。
我試過使用SysLogHandler
的選項。這適用於Mac:
import logging
import logging.handlers
import syslog
h = logging.handlers.SysLogHandler(address='/var/run/syslog', facility=syslog.LOG_LOCAL1)
h.ident = 'works_on_macs'
logger = logging.getLogger('i_am_a_lumberjack')
logger.addHandler(h)
logger.debug("And I don't care")
logger.info('There is a sale on today')
logger.warn('Do not touch the hot stove!')
logger.error('Sorry, times up')
logger.critical('That sure is an ugly tie')
這些消息將顯示在我的mac syslog中。但是,當我在Debian 7上更改address='/dev/log'
...沒有骰子。
然而:
import syslog
syslog.openlog(ident='im_a_lumberjack', facility=syslog.LOG_LOCAL1)
syslog.syslog(syslog.WARNING, 'Watch out!')
適用於Debian 7,但Mac。
我真的很想能夠獲得一種適用於這兩種平臺的日誌記錄解決方案。顯然地址會有所不同,但我已經在配置中設置。
那麼我怎樣才能讓syslog工作在Mac 和 Debian?
編輯:
進一步的信息 - 我發現,我的SysLogHandler似乎使用該設施的權利,也許不會是(?)。消息是被拾起的syslog,但他們要去一個包羅萬象的,這使我相信他們沒有得到標記LOG_LOCAL1
如果是這樣的話,它似乎已經固定在Python代碼: '高清encodePriority(個體經營,設施,優先級): 如果isinstance(設施,即basestring): 設施= self.facility_names [工具] ' – Chris