AKTUALIZACE:
Původní otázka se zdá být neplatná, i když se mi podařilo vynutit logger používat datetime.now()
to stále neřeší můj konečný cíl učinit přihlášení časová razítka reagovat na OS časové pásmo změny bez restartu pythonu. Poskytl jsem odpověď, kterou jsem našel níže.
Jak vynutit logger používat datetime.now()
místo time.asctime()
? Musím protokol striktně dodržovat OS Windows poskytnutý čas, ale time.asctime()
pokusy převést časové pásmo, pokud si myslí, že je to potřeba. Jak mám přepsat toto chování?
V současné době jsem použít vlastní přihlášení.formát podtřídy s řetězec formátu '{asctime}: {levelname} - {message}'
Účelem toho je, protože můj skript v pythonu změny v OS časové pásmo během výkonu. Chci se přihlásit, aby okamžitě sledovat aktualizované časové pásmo hned po změně scénáře. Snažil jsem se definovat converter
funkce uvnitř logging.format
podtřídy, ale to mělo za následek časové pásmo v protokolech není aktualizován, i když jsem ho změnil.
Kód jsem použil (od doc https://docs.python.org/3.9/library/logging.html#logging.Formatter.formatTime):
class custom(logging.Formatter):
def converter(self, timestamp):
return datetime.now()
Snažil každou odpověď zde: Jak Změnit časové pásmo v Python protokolování?, non pracuje jako všichni nemají aktualizovat na nové časové pásmo, nastavení v OS tím, že můj scénář. Snažil jsem se importlib.reload(tzlocal)
a také ničemu.
Jediná rozumná odpověď, kterou jsem našel byl k použití time.tzset()
ale to zřejmě není k dispozici na Windows