保存日志 - SimpleHTTPServer

Sam*_*tha 8 python logging save simplehttpserver

如何保存控制台的输出

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

到文件?

这是代码:

import SimpleHTTPServer
import SocketServer

PORT = 1548

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

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

print "serving at port", PORT

httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)

Rob*_*obᵩ 14

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

1)继续使用BaseHTTPRequestHandler.log_message(),但更改以下值sys.stderr:

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()
Run Code Online (Sandbox Code Playgroud)

2)创建一个新xxxRequestHandler类,替换.log_message():

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()
Run Code Online (Sandbox Code Playgroud)