J'ai créé une implémentation simple Python XML-RPC, largement basée sur les exemples.Comment gérer les sorties et les exceptions Python XML-RPC?
Cependant, il envoie une sortie comme ceci:
foo.bar.com - - [13/Feb/2010 17:55:47] "POST /RPC2 HTTP/1.0" 200 -
... au terminal, même si je rediriger la sortie standard et l'erreur standard à un fichier en utilisant >>
ou >
. Je le fais avec la ligne suivante:
python foobar 2>&1 >> foobar.log
Il semble presque que ce n'est pas l'envoi standard, mais ailleurs.
En outre, lorsqu'une exception se produit sur recieving une demande, l'ensemble application se bloque avec cette erreur:
----------------------------------------
Exception happened during processing of request from ('1.2.3.4', 51284)
Comment puis-je gérer cette exception? J'ai besoin de récupérer gracieusement, et il suffit de se connecter le message d'exception plutôt que le plantage du serveur.
Comment puis-je rediriger les requêtes de journal à un autre endroit? Par exemple, une instance de 'logging.getLogger()'. De même, comment l'application plante-t-elle lorsque l'exception est imprimée? –
Comme vous pouvez le voir dans le code entre guillemets ("SocketServer.py" de la bibliothèque standard, qui est utilisée indirectement par 'xmlrpclib'), l'application ne plante pas lorsqu'une exception se produit, elle est simplement ignorée. Si vous souhaitez rediriger ces journaux, vous pouvez écrire vos propres classes 'BaseServer' /' BaseHTTPServer'/'SimpleXMLRPCServer' (dérivées les unes des autres), ou simplement remplacer les fonctions de journalisation, par ex. 'SocketServer.BaseServer.handle_error = yourLogHandlerWhichWritesToLogger'. – AndiDog