Layanan aplikasi tidak menghasilkan file dengan tanggal baru

Saya memiliki layanan aplikasi Azure dan wadahnya memiliki file python. saya menggunakan kode berikut untuk menghasilkan file log

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 )

Namun ketika saya memulai layanan aplikasi untuk pertama kalinya, itu memberi saya file log dengan tanggal saat ini. Namun nama filenya tidak diperbarui nanti. apa yang perlu dilakukan agar tercipta file baru sesuai tanggal.


person Nikita    schedule 22.08.2020    source sumber
comment
perilaku apa yang kamu harapkan? file log baru setiap hari?   -  person MrFuppes    schedule 22.08.2020
comment
@MrFuppes: ya, file log baru setiap hari   -  person Nikita    schedule 24.08.2020
comment
tebakan saya adalah bahwa baris now = datetime.now() hanya dipanggil sekali, ketika logger dipakai. setelah itu, terus masuk ke file awal. Anda mungkin harus memperbarui/membuat ulang logger jika tanggalnya berubah. Saya bukan ahli dalam hal ini tetapi mungkin ada gunanya mencari ke arah itu, seperti misalnya. di sini.   -  person MrFuppes    schedule 24.08.2020
comment
@MrFuppes: Ya, inilah yang terjadi. File baru dibuat hanya ketika saya memulai ulang layanan.   -  person Nikita    schedule 24.08.2020


Jawaban (1)


Jika Anda ingin membuat file log harian, Anda harus menggunakan TimedRotatingFileHandler. Dan dalam kasus Anda, Anda perlu mengubah baris berikut menjadi TimedRotatingFileHandler('log/mylog.log', when="midnight", interval=1, encoding='utf8')

Misalnya

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)

Untuk detail selengkapnya, lihat di sini dan di sini

person Jim Xu    schedule 25.08.2020