首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将xmlrpc服务器的日志记录输出重定向到某个文件

如何将xmlrpc服务器的日志记录输出重定向到某个文件
EN

Stack Overflow用户
提问于 2013-12-11 06:06:30
回答 1查看 2.4K关注 0票数 6

我正在使用SimpleXMLRPCServer模块创建一个rpc服务器。每当我向服务器发送任何请求时,它都会显示连接请求。如何将此输出重定向到某个文件,以便稍后可以看到向服务器发出的请求。

这是我的服务器脚本

代码语言:javascript
复制
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'

无论何时我发出任何请求,我都会得到这样的请求-

代码语言:javascript
复制
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不存在

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-11 08:28:23

这些消息被写入sys.stderr。你可以

  1. 重定向stderr,或
  2. SimpleXMLRPCRequestHandler的子类中,如果愿意,可以重写log_message方法,并在那里使用logging

最初的方法是模块BaseHTTPServer中的BaseHTTPServer,如下所示:

代码语言:javascript
复制
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))
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20511747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档