Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

redirriger stdout et stderr

4 réponses
Avatar
m.banaouas
bonjour à tous,

j'utilise le module smtplib et dans certains cas, l'envoi du message
échoue. J'ai bien intercepté l'exception générée ainsi que le log
(smtp_server.debuglevel=1) ce qui me fournit des info très utiles.

Question: comment redirriger stdout et stderr vers un flux interne à mon
script afin de le logger à mon tour et à ma façon?

merci.

4 réponses

Avatar
Bruno Desthuilliers
bonjour à tous,

j'utilise le module smtplib et dans certains cas, l'envoi du message
échoue. J'ai bien intercepté l'exception générée ainsi que le log
(smtp_server.debuglevel=1) ce qui me fournit des info très utiles.

Question: comment redirriger stdout et stderr vers un flux interne à mon
script afin de le logger à mon tour et à ma façon?

merci.


import sys
class FakeStream(object):
def __init__(self):
self._data = []
def write(self, val):
self._data.append(val)
def __str__(self):
return "".join(map(str, self._data))

sys.stdout = FakeStream()
sys.stderr = FakeStream()

Avatar
NicolasP
bonjour à tous,

j'utilise le module smtplib et dans certains cas, l'envoi du message
échoue. J'ai bien intercepté l'exception générée ainsi que le log
(smtp_server.debuglevel=1) ce qui me fournit des info très utiles.

Question: comment redirriger stdout et stderr vers un flux interne à
mon script afin de le logger à mon tour et à ma façon?

merci.


import sys
class FakeStream(object):
def __init__(self):
self._data = []
def write(self, val):
self._data.append(val)
def __str__(self):
return "".join(map(str, self._data))

sys.stdout = FakeStream()
sys.stderr = FakeStream()

Ne serait t-il pas préférable de sauvegarder sys.stdout et sys.stderr avant ?

Histoire de pouvoir y revenir si nécessaire.

Nicolas


Avatar
Bruno Desthuilliers
bonjour à tous,

j'utilise le module smtplib et dans certains cas, l'envoi du message
échoue. J'ai bien intercepté l'exception générée ainsi que le log
(smtp_server.debuglevel=1) ce qui me fournit des info très utiles.

Question: comment redirriger stdout et stderr vers un flux interne à
mon script afin de le logger à mon tour et à ma façon?

merci.


import sys
class FakeStream(object):
def __init__(self):
self._data = []
def write(self, val):
self._data.append(val)
def __str__(self):
return "".join(map(str, self._data))

sys.stdout = FakeStream()
sys.stderr = FakeStream()

Ne serait t-il pas préférable de sauvegarder sys.stdout et sys.stderr

avant ? Histoire de pouvoir y revenir si nécessaire.


Ils le sont déjà, dans sys.__stdout__ et sys.__stderr__



Avatar
NicolasP
bonjour à tous,

j'utilise le module smtplib et dans certains cas, l'envoi du message
échoue. J'ai bien intercepté l'exception générée ainsi que le log
(smtp_server.debuglevel=1) ce qui me fournit des info très utiles.

Question: comment redirriger stdout et stderr vers un flux interne à
mon script afin de le logger à mon tour et à ma façon?

merci.


import sys
class FakeStream(object):
def __init__(self):
self._data = []
def write(self, val):
self._data.append(val)
def __str__(self):
return "".join(map(str, self._data))

sys.stdout = FakeStream()
sys.stderr = FakeStream()

Ne serait t-il pas préférable de sauvegarder sys.stdout et sys.stderr

avant ? Histoire de pouvoir y revenir si nécessaire.


Ils le sont déjà, dans sys.__stdout__ et sys.__stderr__

Je le note.