У меня есть сторонний модуль, который открывает файл с использованием logging.FileHandler
, я хочу знать, как я могу узнать его fileno
с именем файла.Получить fileno() для файла, открытого текущим pid, используя имя файла?
third_party.py:
def setup_loging(logfile):
logFormatter = logging.Formatter(
"%(asctime)s [%(process)d] [%(name)-12.12s] "
"[%(levelname)-5.5s] %(message)s")
rootLogger = logging.getLogger()
rootLogger.setLevel(logging.NOTSET)
if logfile:
fileHandler = logging.FileHandler(logfile, mode="wt", encoding="utf-8")
fileHandler.setFormatter(logFormatter)
fileHandler.setLevel(logging.NOTSET)
rootLogger.addHandler(fileHandler)
consoleHandler = logging.StreamHandler(sys.stdout)
if verbose:
consoleHandler.setLevel(logging.DEBUG)
else:
consoleHandler.setLevel(logging.INFO)
consolelogFormatter = logging.Formatter(
"[%(name)-12.12s] [%(levelname)-5.5s] %(message)s")
consoleHandler.setFormatter(consolelogFormatter)
rootLogger.addHandler(consoleHandler)
my_script.py:
from third_party import setup_loging
setup_loging(logfile='/tmp/foo.log')
# How do I get the fileno for file /tmp/foo.log ?
# only way i know is doing: lsof /tmp/foo.log
print get_fileno_from_filename('/tmp/foo.log')
Однако может быть несколько файловых дескрипторов для данного имени файла. –
Любой способ изменить 'setup_loging()', чтобы он возвращал его вызывающему? – martineau