मेरे पास निम्न कॉन्फ़िगरेशन फ़ाइल है जिसका उपयोग मैं अपने पायथन मॉड्यूल में लॉगिंग को कॉन्फ़िगर करने के लिए कर रहा हूं, इसके साथ समस्या यह है कि यह फ़ाइल-नाम में टाइमस्टैम्प संलग्न नहीं करता है, अभी बनाई गई लॉग फ़ाइल file_handler.log है लेकिन मुझे यह चाहिए होने के लिए file_handler-timestamp.log

{
"version": 1,
"disable_existing_loggers": true,
"formatters": {
  "simple": {
    "format": "%(asctime)s %(levelname)s %(filename)s %(lineno)s %(message)s",
    "datefmt": "%Y-%m-%d %H:%M:%S"
  }
},
"handlers": {
  "file_handler": {
    "level": "INFO",
    "class": "logging.handlers.TimedRotatingFileHandler",
    "formatter": "simple",
    "filename": "error.log",
    "backupCount": 10,
    "interval" : 1,
    "when": "s",
    "encoding": "utf8"
  }
},
"loggers": { },
"root": {
  "handlers": [
    "file_handler"
  ],
  "level": "DEBUG"
}
}

कॉन्फ़िगरेशन के बिना कार्य कोड

import logging
import time
from logging.handlers import RotatingFileHandler
    
logger = logging.getLogger('log_1')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s', '%Y-%m-%d %H:%M:%S')
handler = RotatingFileHandler('log' + time.strftime('_%Y%m%d-%H%M') + '.log', maxBytes=2000, backupCount=10)
handler.setFormatter(formatter)
logger.addHandler(handler)

वर्कअराउंड कोड जो प्रोग्राम शुरू होने पर गतिशील रूप से कॉन्फ़िगरेशन को अपडेट करता है

import logging.config
import json
import time

fp = open("sample_config.json")
config = json.load(fp)
fp.close()
config['handlers']['file_handler']['filename'] += time.strftime('_%Y%m%d-%H%M') + '.log'
logging.config.dictConfig(config)
0
Infinite 9 अक्टूबर 2020, 14:43

1 उत्तर

सबसे बढ़िया उत्तर

timestamp कब का? फ़ाइल कब घुमाई जाती है या कब बनाई जाती है?

यदि आप TimedRotatingFileHandler का उपयोग करते हैं, तो जब फ़ाइल को घुमाया जाता है, तो टाइमस्टैम्प को फ़ाइल नाम में जोड़ दिया जाता है।

यदि आप लॉग फ़ाइल नाम में टाइमस्टैम्प जोड़ना चाहते हैं, तो आपको RotatingFileHandler उपवर्ग करना होगा और __init__ विधि को संशोधित करना होगा। फिर कॉन्फ़िगरेशन फ़ाइल के "file_handler" के "class" आइटम को अपनी नई कक्षा में इंगित करें।

यह करना आसान है, लेकिन हो सकता है कि यह वह न हो जो आपको चाहिए। बस टाइमस्टैम्प को घुमाए गए लॉग फ़ाइल नाम में जोड़ दें या यदि आपको आकार को भी सीमित करने की आवश्यकता है, तो इसे पढ़ें उत्तर

1
dragon2fly 12 अक्टूबर 2020, 11:57