logger=logging.getLogger()
logger.setLevel(logging.INFO)
file_handler = logging.FileHandler("std.log", mode='w')
file_handler.setFormatter(logging.Formatter('%(asctime)s %(message)s'))
logger.addHandler(file_handler)
logger.addHandler(logging.StreamHandler(stream=sys.stdout))
class MeuManipulador(logging.Handler):
def emit(self, record):
if record.levelno == logging.ERROR:
log_entry = self.format(record)
if "No such comm target registered" in str(record.msg):
return
log(mensagem = log_entry)
logger.addHandler(MeuManipulador())
Everuthing работает нормально, но в конце моего длинного кода есть код, в котором logger.info или logger.warning работают нормально.
logger.info('Dropando a tabela anterior')
with enginedb2 as conn:
try:
sql = ''' drop table DB2I023A.CNFC_CNV_HST_CTBL'''
conn.execute(text(sql))
conn.commit()
logger.info(f'comando SQL {sql} executado com sucesso')
time.sleep(1)
except ResourceClosedError as error:
logger.warning(f'comando SQL {sql} não foi executado com sucesso, resultando no erro : {error}')
pass
Я использую ведение журнала Python для записи отладочной информации в файл и вывода ее на экран: [code]logger=logging.getLogger() logger.setLevel(logging.INFO)
class MeuManipulador(logging.Handler): def emit(self, record): if record.levelno == logging.ERROR: log_entry = self.format(record) if "No such comm target registered" in str(record.msg): return log(mensagem = log_entry) logger.addHandler(MeuManipulador()) [/code] Everuthing работает нормально, но в конце моего длинного кода есть код, в котором logger.info или logger.warning работают нормально. [code]logger.info('Dropando a tabela anterior') with enginedb2 as conn: try: sql = ''' drop table DB2I023A.CNFC_CNV_HST_CTBL''' conn.execute(text(sql)) conn.commit() logger.info(f'comando SQL {sql} executado com sucesso') time.sleep(1) except ResourceClosedError as error: logger.warning(f'comando SQL {sql} não foi executado com sucesso, resultando no erro : {error}') pass [/code] Но если я использую logger.error, я получу это! [code]--------------------------------------------------------------------------- ResourceClosedError Traceback (most recent call last) File :5
File /usr/local/lib/python3.11/logging/__init__.py:1644, in Logger.handle(self, record) 1637 """ 1638 Call the handlers for the specified record. 1639 1640 This method is used for unpickled records received from a socket, as 1641 well as those created locally. Logger-level filtering is applied. 1642 """ 1643 if (not self.disabled) and self.filter(record): -> 1644 self.callHandlers(record)
File /usr/local/lib/python3.11/logging/__init__.py:1706, in Logger.callHandlers(self, record) 1704 found = found + 1 1705 if record.levelno >= hdlr.level: -> 1706 hdlr.handle(record) 1707 if not c.propagate: 1708 c = None #break out