HEX
Server: Apache
System: Linux vpshost0650.publiccloud.com.br 4.4.79-grsec-1.lc.x86_64 #1 SMP Wed Aug 2 14:18:21 -03 2017 x86_64
User: bandeirantesbomb3 (10068)
PHP: 8.0.7
Disabled: apache_child_terminate,dl,escapeshellarg,escapeshellcmd,exec,link,mail,openlog,passthru,pcntl_alarm,pcntl_exec,pcntl_fork,pcntl_get_last_error,pcntl_getpriority,pcntl_setpriority,pcntl_signal,pcntl_signal_dispatch,pcntl_sigprocmask,pcntl_sigtimedwait,pcntl_sigwaitinfo,pcntl_strerror,pcntl_wait,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,php_check_syntax,php_strip_whitespace,popen,proc_close,proc_open,shell_exec,symlink,system
Upload Files
File: //usr/lib/python2.7/site-packages/boto/requestlog.py
import sys
from datetime import datetime
from threading import Thread
import Queue

from boto.utils import RequestHook
from boto.compat import long_type


class RequestLogger(RequestHook):
    """
    This class implements a request logger that uses a single thread to
    write to a log file.
    """
    def __init__(self, filename='/tmp/request_log.csv'):
        self.request_log_file = open(filename, 'w')
        self.request_log_queue = Queue.Queue(100)
        Thread(target=self._request_log_worker).start()

    def handle_request_data(self, request, response, error=False):
        len = 0 if error else response.getheader('Content-Length')
        now = datetime.now()
        time = now.strftime('%Y-%m-%d %H:%M:%S')
        td = (now - request.start_time)
        duration = (td.microseconds + long_type(td.seconds + td.days * 24 * 3600) * 1e6) / 1e6

        # write output including timestamp, status code, response time, response size, request action
        self.request_log_queue.put("'%s', '%s', '%s', '%s', '%s'\n" % (time, response.status, duration, len, request.params.get('Action')))

    def _request_log_worker(self):
        while True:
            try:
                item = self.request_log_queue.get(True)
                self.request_log_file.write(item)
                self.request_log_file.flush()
                self.request_log_queue.task_done()
            except:
                import traceback
                traceback.print_exc(file=sys.stdout)