首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存日志- SimpleHTTPServer

保存日志- SimpleHTTPServer
EN

Stack Overflow用户
提问于 2014-08-18 18:07:47
回答 2查看 19.9K关注 0票数 8

如何保存控制台的输出,如下所示

192.168.1.1-- 18/Aug/2014 12:05:59代码404,找不到消息文件

到一个文件?

代码如下:

代码语言:javascript
复制
import SimpleHTTPServer
import SocketServer

PORT = 1548

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT

httpd.serve_forever()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-19 10:59:31

BaseHTTPRequestHandler.log_message()通过写入sys.stderr来打印所有日志消息。您有两个选择:

1)继续使用BaseHTTPRequestHandler.log_message(),但修改sys.stderr的值

代码语言:javascript
复制
import SimpleHTTPServer
import SocketServer

PORT = 1548

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT

import sys
buffer = 1
sys.stderr = open('logfile.txt', 'w', buffer)
httpd.serve_forever()

2)创建新的xxxRequestHandler类,替换.log_message()

代码语言:javascript
复制
import SimpleHTTPServer
import SocketServer
import sys

PORT = 1548

class MyHTTPHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    buffer = 1
    log_file = open('logfile.txt', 'w', buffer)
    def log_message(self, format, *args):
        self.log_file.write("%s - - [%s] %s\n" %
                            (self.client_address[0],
                             self.log_date_time_string(),
                             format%args))

Handler = MyHTTPHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT

httpd.serve_forever()
票数 19
EN

Stack Overflow用户

发布于 2014-08-18 18:43:08

我使用了BaseHTTPServer而不是SimpleHTTPServer。

这就对了:

代码语言:javascript
复制
#!/usr/bin/python
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

PORT_NUMBER = 5451

#This class will handles any incoming request from
#the browser 
class myHandler(BaseHTTPRequestHandler):

    #Handler for the GET requests
    def do_GET(self):
        self.send_response(200)
        #self.send_header('Content-type','text/html')
        self.end_headers()
        text_file = open("ip.txt", "a")
        text_file.write(str(self.client_address) + "\n")
        text_file.close()
        # Send the html message
        #self.wfile.write("Hello World !")

        return

try:
    #Create a web server and define the handler to manage the
    #incoming request
    server = HTTPServer(('', PORT_NUMBER), myHandler)
    print 'Started httpserver on port ' , PORT_NUMBER

    #Wait forever for incoming htto requests
    server.serve_forever()

except KeyboardInterrupt:
    print '^C received, shutting down the web server'
    server.socket.close()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25360798

复制
相关文章

相似问题

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