Код: Выделить всё
import logging
logger = logging.getLogger(__name__)
class FileWriter:
def write():
logger.info("Writing..")
Код: Выделить всё
from util.file_writer import FileWriter
class NetworkHandler:
def __init__(self, ip):
self.ip = ip
self.file_writer = FileWriter()
def do_something(self):
self.file_writer.write("Some network data")
class UserInputHandler:
def __init__(self):
self.file_writer = FileWriter()
def process_input(self):
self.file_writer.write("Some response to user input")
if __name__ == "__main__":
network_handler = NetworkHandler("192.168.1.1")
network_handler.do_something()
user_input_handler = UserInputHandler()
user_input_handler.process_input()
Код: Выделить всё
ipВ документации модуля logging указано, что необходимо использовать контекстные переменные, но поскольку единственным общим родителем средств ведения журнала FileWriter и NetworkHandler является root, установка контекстного фильтра в корневом средстве ведения журнала также повлияет на средство ведения журнала UserInputHandler. Передача регистратора в FileWriter не является чистой, поскольку код может быть сторонней библиотекой. Также я хочу избежать использования «заполнителя» для ip в строке формата журнала.
Подробнее здесь: https://stackoverflow.com/questions/798 ... oot-logger
Мобильная версия