บริการแอปไม่ได้สร้างไฟล์ด้วยวันที่ใหม่

ฉันมีบริการแอป Azure และคอนเทนเนอร์มีไฟล์ Python ฉันใช้รหัสต่อไปนี้เพื่อสร้างไฟล์บันทึก

now = datetime.now()
timestr = now.strftime("%Y%m%d")
logfile = 'log'+timestr
logHandler = RotatingFileHandler(filename=logfile, mode='a', maxBytes=10 * 1024 * 1024, backupCount=10)
logFormatter = logging.Formatter('[%(levelname)s]\t: %(asctime)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
logHandler.setFormatter( logFormatter )
logger = logging.getLogger( 'MyLogger' )
logger.addHandler( logHandler )

อย่างไรก็ตาม เมื่อฉันเริ่มใช้บริการแอปเป็นครั้งแรก ระบบจะให้ไฟล์บันทึกพร้อมวันที่ปัจจุบันให้ฉัน แต่ชื่อไฟล์จะไม่อัพเดตในภายหลัง สิ่งที่ต้องทำเพื่อสร้างไฟล์ใหม่ตามวันที่


person Nikita    schedule 22.08.2020    source แหล่งที่มา
comment
คุณคาดหวังพฤติกรรมอย่างไร? ไฟล์บันทึกใหม่ในแต่ละวัน?   -  person MrFuppes    schedule 22.08.2020
comment
@MrFuppes: ใช่ไฟล์บันทึกใหม่ในแต่ละวัน   -  person Nikita    schedule 24.08.2020
comment
เดา ของฉันคือว่าบรรทัด now = datetime.now() จะถูกเรียกเพียงครั้งเดียว เมื่อตัวบันทึกถูกสร้างอินสแตนซ์ หลังจากนั้น มันก็จะทำการล็อกไปยังไฟล์เริ่มต้นต่อไป คุณอาจต้องอัปเดต / สร้างตัวบันทึกใหม่หากวันที่เปลี่ยนแปลง ฉันไม่เชี่ยวชาญเรื่องนี้ แต่บางทีการค้นหาไปในทิศทางนั้นอาจช่วยได้ เช่น ที่นี่.   -  person MrFuppes    schedule 24.08.2020
comment
@MrFuppes: ใช่ นี่คือสิ่งที่เกิดขึ้น ไฟล์ใหม่จะถูกสร้างขึ้นเมื่อฉันรีสตาร์ทบริการเท่านั้น   -  person Nikita    schedule 24.08.2020


คำตอบ (1)


หากคุณต้องการสร้างไฟล์บันทึกรายวัน คุณควรใช้ TimedRotatingFileHandler. และในกรณีของคุณ คุณจะต้องเปลี่ยนบรรทัดต่อไปนี้เป็น TimedRotatingFileHandler('log/mylog.log', when="midnight", interval=1, encoding='utf8')

ตัวอย่างเช่น

import logging
from logging.handlers import TimedRotatingFileHandler
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
handler = TimedRotatingFileHandler('log/mylog.log', when="midnight", interval=1, encoding='utf8')
handler.suffix = "%Y-%m-%d"
handler.setFormatter(formatter)
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(handler)

สำหรับรายละเอียดเพิ่มเติม โปรดดูที่นี่ และ ที่นี่

person Jim Xu    schedule 25.08.2020