logging.FileHandler diff Py2 v Py3
Skip Montanaro
skip.montanaro at gmail.com
Tue Apr 3 11:14:23 EDT 2018
I've encountered a problem in an application I'm porting from Python
2.7 to 3.6. The logginng.FileHandler class likes "/dev/stderr" as a
destination in Python 2, but complains in Python 3.
Python 2.7.14:
>>> import logging
>>> logging.FileHandler("/dev/stderr")
<logging.FileHandler object at 0x7fbbba9bbdd0>
Python 3.6.4:
>>> import logging
>>> logging.FileHandler("/dev/stderr")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/skip/miniconda3/envs/python3/lib/python3.6/logging/__init__.py",
line 1030, in __init__
StreamHandler.__init__(self, self._open())
File "/home/skip/miniconda3/envs/python3/lib/python3.6/logging/__init__.py",
line 1059, in _open
return open(self.baseFilename, self.mode, encoding=self.encoding)
OSError: [Errno 29] Illegal seek
I can see how to work around the error, pass mode="w" when passing
/dev/{stdout,stderr} to the constructor. Shouldn't that bit of
ugliness be hidden in the logging module?
Skip
More information about the Python-list
mailing list