2012-03-03 7 views
13

मैं syslog जुर्माना पर लॉग इन कर रहा हूं लेकिन 'टैग' निर्दिष्ट करने के तरीके को बाहर नहीं कर सकता। लॉगिंग वर्तमान में यह पोस्ट करता है:'अज्ञात' से syslog पर लॉग इन करते समय 'टैग' को कैसे बदला जाए?

Mar 3 11:45:34 TheMacMini Unknown: INFO FooBar 

लेकिन मैं चाहता हूं कि 'अज्ञात' कुछ पर सेट किया जाए। उदाहरण के लिए:

Mar 3 11:45:34 TheMacMini Foopybar: INFO FooBar 

अगर मैं आदेश पंक्ति यह -t विकल्प के माध्यम से नियंत्रित किया जा सकता से logger का उपयोग करें ...

$ logger -t Foopybar FooBar && tail -1 /var/log/system.log 
Mar 3 12:05:00 TheMacMini Foopybar[4566]: FooBar 

लेकिन अजगर से प्रवेश करने मैं निर्दिष्ट करने के लिए सक्षम होने के लिए नहीं है टैग:

import logging 
logging.info("FooBar") 

बस मुझे शीर्ष पर दिखाया गया 'अज्ञात' टैग देता है। मैंने इस spec को परिभाषित किया है:

LOGGING = { 
    'version': 1, 
    'formatters': { 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'syslog':{ 
      'address': '/var/run/syslog', 
      'class': 'logging.handlers.SysLogHandler', 
      'facility': 'local2', 
      'formatter': 'simple' 
     } 
    }, 
    'loggers': { 
     '': { 
      'handlers': ['syslog'], 
      'level': 'INFO', 
      } 
    } 
} 

मैं टैग कैसे निर्दिष्ट करूं ताकि यह हमेशा "अज्ञात" न हो?

उत्तर

12

टैगिंग के लिए लॉग संदेश का सरल तरीका

यह करें: logging.info("TagName: FooBar") और आप संदेश में चिह्नित किया जाएगा! आपको बस अपने सभी संदेशों को "टैगनाम" के साथ शुरू करने की आवश्यकता है। और यह बिल्कुल बहुत सुरुचिपूर्ण नहीं है।

बेहतर समाधान

सेटअप अपने लकड़हारा:

log = logging.getLogger('name') 
address=('log-server',logging.handlers.SYSLOG_UDP_PORT) 
facility=logging.handlers.SysLogHandler.LOG_USER 
h=logging.handlers.SysLogHandler(address,facility) 
f = logging.Formatter('TagName: %(message)s') 
h.setFormatter(f) 
log.addHandler(h) 

और इसका इस्तेमाल करते हैं:

log.info('FooBar') 
4

मैं भले ही @ साशा का जवाब है बस पूरा होने के लिए इस जोड़ रहा, बिलकुल सही।

आप syslog.syslog का उपयोग कर सीधे तंत्र लॉग को संदेशों लॉग इन करने की हो तो आपको टैग syslog.openlog समारोह का उपयोग कर सेट कर सकते हैं:

import syslog 
syslog.openlog('foo') 
syslog.syslog('bar') 

linux खोल करने के लिए वापस जा रहे हैं:

$ tail -f /var/log/syslog 
Sep 7 07:01:58 dev-balthazar foo: bar 
+0

यह सही है उत्तर – shrewmouse

संबंधित मुद्दे