Как перенаправить вывод логов сервера xmlrpc в какой-нибудь файл

Я использую модуль SimpleXMLRPCServer для создания сервера RPC. Всякий раз, когда я отправляю любой запрос на сервер, он показывает мне запрос на соединение. Как я могу перенаправить этот вывод в какой-то файл, чтобы я мог видеть запрос, сделанный на сервер позже.

это мой скрипт для сервера

from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
import logging
import os
import string
from subprocess import Popen,PIPE 
import xmlrpclib
# Set up logging
logging.basicConfig(level=logging.DEBUG, filename = 'RPCServer.log')
class FileOperation():
'''Class to perform file operation on the Remote machine'''
    def __init__(self):
       self.fh = None
       self.os = os            #adding built-in OS module functionality
       self.string = string    #adding built-in String module functionality

# Restrict to a particular path.

class RequestHandler(SimpleXMLRPCRequestHandler):
    rpc_paths = ('/RPC2',)
# Create server
server = SimpleXMLRPCServer(("localhost", 8000), requestHandler = RequestHandler,allow_none = True, logRequests = True)
server.register_introspection_functions()
server.register_instance(FileOperation(),allow_dotted_names = True )


# Run the server's main loop
try:
    print 'Use Control-C to exit'
    server.serve_forever()
except KeyboardInterrupt:
    print 'Exiting'

Всякий раз, когда я отправляю любой запрос, я получаю o/p как это -

Use Control-C to exit
127.0.0.1 - - [11/Dec/2013 11:34:29] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [11/Dec/2013 11:34:30] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [11/Dec/2013 11:34:31] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [11/Dec/2013 11:34:32] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [11/Dec/2013 11:34:33] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [11/Dec/2013 11:34:34] "POST /RPC2 HTTP/1.1" 200 -
127.0.0.1 - - [11/Dec/2013 11:34:35] "POST /RPC2 HTTP/1.1" 200 -

Как я могу перенаправить этот O / P в какой-то файл. Я установил имя файла в конфигурации регистрации, но o/p не идет туда

1 ответ

Решение

Сообщения пишутся sys.stderr, Вы также можете

  1. переадресовывать stderr, или же
  2. В вашем подклассе SimpleXMLRPCRequestHandler переопределить метод log_message и использовать logging там, если хотите.

Оригинальный метод BaseHTTPRequestHandler.log_message в модуле BaseHTTPServer и выглядит так:

def log_message(self, format, *args):
    """Log an arbitrary message.

    This is used by all other logging functions.  Override
    it if you have specific logging wishes.

    The first argument, FORMAT, is a format string for the
    message to be logged.  If the format string contains
    any % escapes requiring parameters, they should be
    specified as subsequent arguments (it's just like
    printf!).

    The client host and current date/time are prefixed to
    every message.

    """

    sys.stderr.write("%s - - [%s] %s\n" %
                     (self.address_string(),
                      self.log_date_time_string(),
                      format%args))
Другие вопросы по тегам