in Aliyun/Log/Client.php [265:315]
public function putLogs(Aliyun_Log_Models_PutLogsRequest $request) {
if (count ( $request->getLogitems () ) > 4096)
throw new Aliyun_Log_Exception ( 'InvalidLogSize', "logItems' length exceeds maximum limitation: 4096 lines." );
$logGroup = new LogGroup ();
$topic = $request->getTopic () !== null ? $request->getTopic () : '';
$logGroup->setTopic ( $request->getTopic () );
$source = $request->getSource ();
if ( ! $source )
$source = $this->source;
$logGroup->setSource ( $source );
$logitems = $request->getLogitems ();
foreach ( $logitems as $logItem ) {
$log = new Log ();
$log->setTime ( $logItem->getTime () );
$content = $logItem->getContents ();
foreach ( $content as $key => $value ) {
$content = new Log_Content ();
$content->setKey ( $key );
$content->setValue ( $value );
$log->addContents ( $content );
}
$logGroup->addLogs ( $log );
}
$body = Aliyun_Log_Util::toBytes( $logGroup );
unset ( $logGroup );
$bodySize = strlen ( $body );
if ($bodySize > 3 * 1024 * 1024) // 3 MB
throw new Aliyun_Log_Exception ( 'InvalidLogSize', "logItems' size exceeds maximum limitation: 3 MB." );
$params = array ();
$headers = array ();
$headers ["x-log-bodyrawsize"] = $bodySize;
$headers ['x-log-compresstype'] = 'deflate';
$headers ['Content-Type'] = 'application/x-protobuf';
$body = gzcompress ( $body, 6 );
$logstore = $request->getLogstore () !== null ? $request->getLogstore () : '';
$project = $request->getProject () !== null ? $request->getProject () : '';
$shardKey = $request -> getShardKey();
$resource = "/logstores/" . $logstore.($shardKey== null?"/shards/lb":"/shards/route");
if($shardKey)
$params["key"]=$shardKey;
list ( $resp, $header ) = $this->send ( "POST", $project, $body, $resource, $params, $headers );
$requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : '';
$resp = $this->parseToJson ( $resp, $requestId );
return new Aliyun_Log_Models_PutLogsResponse ( $header );
}