Czy istnieje sposób, aby to zrobić? Jeśli logging.config.fileConfig('some.log')
jest ustawiaczem, co to jest getter? Po prostu ciekawy, czy to istnieje.Jak zdobyć plik, do którego loguje się moduł logowania Python?
Odpowiedz
logging.config.fileConfig('some.log')
spróbuje odczytać konfigurację logowania z some.log.
Nie sądzę, że istnieje ogólny sposób na odzyskanie pliku docelowego - nie zawsze jest gwarantowane, że uda się nawet do pliku. (To może iść do syslog, sieć, itd.)
muszę zrobić coś podobnego w bardzo prosty środowiska rejestrowania następujące rutynowe wystarczyły
def _find_logger_basefilename(self, logger):
"""Finds the logger base filename(s) currently there is only one
"""
log_file = None
parent = logger.__dict__['parent']
if parent.__class__.__name__ == 'RootLogger':
# this is where the file name lives
for h in logger.__dict__['handlers']:
if h.__class__.__name__ == 'TimedRotatingFileHandler':
log_file = h.baseFilename
else:
log_file = self._find_logger_basefilename(parent)
return log_file
szukałem pliku używany przez TimedRotatingFileHandler, możesz potrzebować zmienić typ szukanego handlera, prawdopodobnie FileHandler.
Nie jestem pewny, jak by to przebiegło w złożonym środowisku logowania.
W moim przypadku użyłem do zainicjowania pojedynczego programu rejestrującego (w moim głównym skrypcie) i użycia go we wszystkich moich pakietach, wykonując locallogger = logging.getLogger(__name__)
. W tej konfiguracji, aby uzyskać ścieżkę do pliku logowania musiałem zmodyfikować @ Jana odpowiedź następująco
def find_rootlogger_basefilename():
"""Finds the root logger base filename
"""
log_file = None
rootlogger = logging.getLogger('')
for h in rootlogger.__dict__['handlers']:
if h.__class__.__name__ == 'FileHandler':
log_file = h.baseFilename
break
elif h.__class__.__name__ == 'TimedRotatingFileHandler':
log_file = h.baseFilename
break
return log_file
dla mojego podstawowego wykorzystania pojedynczego pliku dziennika, ten pracował
logging.getLoggerClass().root.handlers[0].baseFilename
Poniżej prostej logiki dla pojedynczego pliku obsługujący:
>>> import logging
>>> logger = logging.getLogger("test")
>>> handler = logging.FileHandler("testlog.log")
>>> logger.addHandler(handler)
>>> print logger.handlers[0].baseFilename
/home/nav/testlog.log
>>>
- 1. Python logging.info() nie loguje się wiadomość
- 2. Python butelka zawsze loguje się do konsoli, bez logowania do pliku
- 3. Ten plik logback.xml loguje się do pliku, ale nie loguje się do konsoli?
- 4. Celery Loguje się do pliku
- 5. Przekierowywanie sys.stdout do logowania Python
- 6. delayed_job nie loguje się
- 7. openActiveSessionWithReadPermissions nie loguje się automatycznie
- 8. Facebook loguje się do niewłaściwej aplikacji na iOS
- 9. Plik RDP pulpitu zdalnego automatycznie loguje się do mnie, nie dla nikogo innego.
- 10. Jak dodać moduł do autouzupełniania w Python?
- 11. development.log nie loguje się po usunięciu pliku
- 12. NLog nie loguje się za pomocą ClickOnce
- 13. Jak przedłużyć moduł python? (python-twitter)
- 14. Python: Sprawdzanie, do którego bin należy wartość
- 15. Python. - Najlepszy Moduł pisać do plików XLS
- 16. Moduł rejestrujący python nie zapisuje niczego do pliku
- 17. Czy istnieje moduł websocket serwera Python 3?
- 18. Pobieranie katalogu, z którego wykonywano plik node.js
- 19. phantomjs page.evaluate nie loguje się na konsolę
- 20. log4net nie loguje się Podgląd zdarzeń Windows
- 21. moduł python dla nslookup
- 22. Zalecany moduł kryptograficzny Python?
- 23. log4net z EventLogAppender nie loguje się
- 24. Tomcat nie loguje złożyć
- 25. Jak mogę zaimportować moduł sqlite3 do Python 2.4?
- 26. Uwierzytelnianie SharePoint. Jak zdobyć plik cookie SharePoint z ADFS
- 27. OpenId + JSF przekierowuje użytkownika na stronę, na której się loguje?
- 28. Jak zdobyć ostatni plik indeksu wiersza kolumny?
- 29. Utwórz pojedynczy moduł wykonywalny python
- 30. Jak zdobyć plik klienta socket.io 0.7