예제 #1
0
    def put_logs(self, request):
        """ Put logs to SLS.
        Unsuccessful opertaion will cause an SLSException.
        
        :type request: PutLogsRequest
        :param request: the PutLogs request parameters class
        
        :return: PutLogsResponse
        
        :raise: SLSException
        """
        if len(request.get_log_items()) > 4096:
            raise SLSException(
                'InvalidLogSize',
                "logItems' length exceeds maximum limitation: 4096 lines.")
        logGroup = LogGroup()
        logGroup.Topic = request.get_topic()
        if request.get_source():
            logGroup.Source = request.get_source()
        else:
            if self._source == '127.0.0.1':
                self._source = Util.get_host_ip(request.get_project() + '.' +
                                                self._slsHost)
            logGroup.Source = self._source
        for logItem in request.get_log_items():
            log = logGroup.Logs.add()
            log.Time = logItem.get_time()
            contents = logItem.get_contents()
            for key, value in contents:
                content = log.Contents.add()
                content.Key = unicode(key, 'utf-8')
                content.Value = unicode(value, 'utf-8')
        body = logGroup.SerializeToString()
        if len(body) > 3 * 1024 * 1024:  # 3 MB
            raise SLSException(
                'InvalidLogSize',
                "logItems' size exceeds maximum limitation: 3 MB.")

        headers = {}
        headers['x-sls-bodyrawsize'] = len(body)
        headers['x-sls-compresstype'] = 'deflate'
        body = Util.compress_data(body)
        params = {}
        logstore = request.get_logstore()
        project = request.get_project()
        resource = '/logstores/' + logstore
        respHeaders = self._send('POST', project, body, resource, params,
                                 headers)
        return PutLogsResponse(respHeaders[1])
예제 #2
0
파일: slsclient.py 프로젝트: logteam/tool
 def put_logs(self, request):
     """ Put logs to SLS.
     Unsuccessful opertaion will cause an SLSException.
     
     :type request: PutLogsRequest
     :param request: the PutLogs request parameters class
     
     :return: PutLogsResponse
     
     :raise: SLSException
     """
     if len(request.get_log_items()) > 4096:
         raise SLSException('InvalidLogSize', 
                         "logItems' length exceeds maximum limitation: 4096 lines.")
     logGroup = LogGroup()
     logGroup.Topic = request.get_topic()
     if request.get_source():
         logGroup.Source = request.get_source()
     else:
         if self._source=='127.0.0.1':
             self._source = Util.get_host_ip(request.get_project() + '.' + self._slsHost)
         logGroup.Source = self._source
     for logItem in request.get_log_items():
         log = logGroup.Logs.add()
         log.Time = logItem.get_time()
         contents = logItem.get_contents()
         for key, value in contents:
             content = log.Contents.add()
             content.Key = unicode(key, 'utf-8')
             content.Value = unicode(value, 'utf-8')
     body = logGroup.SerializeToString()
     if len(body) > 3 * 1024 * 1024:  # 3 MB
         raise SLSException('InvalidLogSize', 
                         "logItems' size exceeds maximum limitation: 3 MB.")
     
     headers = {}
     headers['x-sls-bodyrawsize'] = len(body)
     headers['x-sls-compresstype'] = 'deflate'
     body = Util.compress_data(body)
     params = {}
     logstore = request.get_logstore()
     project = request.get_project()
     resource = '/logstores/' + logstore
     respHeaders = self._send('POST', project, body, resource, params, headers)
     return PutLogsResponse(respHeaders[1])