|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
m.banaouas a écrit :
> 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() |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Bruno Desthuilliers a écrit :
> m.banaouas a écrit : >> 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 |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
NicolasP a écrit :
> Bruno Desthuilliers a écrit : >> m.banaouas a écrit : >>> 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__ |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Bruno Desthuilliers a écrit :
> NicolasP a écrit : >> Bruno Desthuilliers a écrit : >>> m.banaouas a écrit : >>>> 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. |
|
![]() |
| Outils de la discussion | |
|
|