/// <summary>
 /// 统计Project下所有日志。
 /// <list type="bullet">
 ///   <item><description>该接口的query是一个标准的SQL查询语句。</description></item>
 ///   <item><description>查询的Project,在请求的域名中指定。</description></item>
 ///   <item><description>查询的logstore,在查询语句的from条件中指定。logstore相当于SQL中的表。</description></item>
 ///   <item><description>在查询的SQL条件中,必须指定要查询的时间范围,时间范围由__date__(timestamp类型)来指定,或__time__(int 类型,单位是unix_time)来指定。</description></item>
 ///   <item><description>如上所述,该接口一次调用必须要在限定时间内返回结果,每次查询只能扫描指定条数的日志量。如果一次请求需要处理的数据量非常大的时候,该请求会返回不完整的结果(并在返回结果中的 x-log-progress 成员标示是否完整)。如此同时,服务端会缓存 15 分钟内的查询结果。当查询请求的结果有部分被缓存命中,则服务端会在这次请求中继续扫描未被缓存命中的日志数据。为了减少您合并多次查询结果的工作量,服务端会把缓存命中的查询结果与本次查询新命中的结果合并返回给您。因此,日志服务可以让您通过以相同参数反复调用该接口来获取最终完整结果。因为您的查询涉及的日志数据量变化非常大,日志服务 API 无法预测需要调用多少次该接口而获取完整结果。所以需要用户通过检查每次请求的返回结果中的x-log-progress成员状态值来确定是否需要继续。需要注意的是,每次重复调用该接口都会重新消耗相同数量的查询 CU。</description></item>
 /// </list>
 /// </summary>
 /// <param name="client">client实例。</param>
 /// <param name="query">查询sql条件。</param>
 /// <param name="project">项目名,此参数将覆盖 client 中默认设置。</param>
 /// <returns>异步响应结果。</returns>
 /// <seealso cref="ILogServiceClient.GetProjectLogsAsync"/>
 public static Task <IResponse <GetLogsResult> > GetProjectLogsAsync(this ILogServiceClient client,
                                                                     String query,
                                                                     String project = null)
 => client.GetProjectLogsAsync(new GetProjectLogsRequest(query)
 {
     ProjectName = project
 });