redirriger stdout et stderr

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Desthuilliers
Le #655065
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()

NicolasP
Le #655059
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


Bruno Desthuilliers
Le #655058
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__



NicolasP
Le #654822
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.





Publicité
Poster une réponse
Anonyme