/// <summary> /// Retrieves log entries that match the specified search criteria. /// </summary> /// <param name="request">Specifies criteria to use when querying logs.</param> /// <param name="pagination">Specifies pagination info to use when requesting paged results.</param> /// <returns>An <see cref="IPagedList{LogEntry}"/> containing the list of log entries.</returns> public Task <IPagedList <LogEntry> > GetAllAsync(GetLogsRequest request, PaginationInfo pagination) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (pagination == null) { throw new ArgumentNullException(nameof(pagination)); } return(Connection.GetAsync <IPagedList <LogEntry> >(BuildUri("logs", new Dictionary <string, string> { { "sort", request.Sort }, { "fields", request.Fields }, { "include_fields", request.IncludeFields?.ToString().ToLower() }, { "from", request.From }, { "take", request.Take?.ToString().ToLower() }, { "q", request.Query }, { "page", pagination.PageNo.ToString() }, { "per_page", pagination.PerPage.ToString() }, { "include_totals", pagination.IncludeTotals.ToString().ToLower() } }), DefaultHeaders, converters)); }
// GET: Log public JsonResult GetLogs(uint from, uint to, int lines, int offset) { if (lines < 1) { lines = 1; } if (lines > 100) { lines = 100; } if (offset < 0) { offset = 0; } LogClient client = new LogClient("cn-hangzhou.log.aliyuncs.com", "LTAIk45GEzpqUxg6", "jcLHPKpmTSU3yjh5quANAHMbqaW3xt"); GetLogsRequest getLogReq = new GetLogsRequest("weapp-api", "cvs_log", from, to, "", "", lines, offset, false); GetLogsResponse getLogResp = client.GetLogs(getLogReq); IList <string> msgs = (from queriedLog in getLogResp.Logs from content in queriedLog.Contents where content.Key.Equals("message", StringComparison.InvariantCultureIgnoreCase) select content.Value).ToList(); return(Json(getLogResp.Count > 0 ? JsonConvert.SerializeObject(msgs) : "", JsonRequestBehavior.AllowGet)); }
public async Task <IActionResult> GetLogs([FromQuery] GetLogsRequest request) { var response = await mediator.Send(request); Log.Information($"User #{HttpContext.GetCurrentUserId()} fetched logs"); return(this.CreateResponse(response)); }
public async Task <IActionResult> GetLogs([FromQuery] GetLogsRequest request) { var response = await mediator.Send(request); logger.LogResponse($"Admin #{HttpContext.GetCurrentUserId()} filtered logs", response.Error); return(response.IsSucceeded ? (IActionResult)Ok(response) : BadRequest(response)); }
public IEnumerable <LogDto> GetLogs([FromQuery] GetLogsRequest request = null) { if (request.Limit > 200) { request.Limit = 200; } return(this.logsService.GetLogs(request).Take(request.Limit)); }
public async Task <GetLogsResponse> GetLogs(GetLogsRequest o) { var result = new GetLogsResponse(o.RequestId); result.Logs.AddRange(await Server.GetLogEntries(o.Application, o.From, o.To)); return(result); }
public async Task <IActionResult> Get(GetLogsRequest request) { return(await ProcessGetRequest < GetLogsRequest, GetLogsResponse, GetLogsRequestValidator, IEnumerable <LogModel> >(request)); }
public override async Task <GetLogsReply> GetLogs(GetLogsRequest request, ServerCallContext context) { var userList = await _logService.GetLogsAsync(); return(new GetLogsReply() { LogList = { _mapper.Map <IEnumerable <LogMessage> >(userList) } }); }
public async Task <IResponse <GetLogsResult> > GetLogsAsync(GetLogsRequest request) => (await this.SendRequestAsync <IList <IDictionary <String, String> > >( new HttpRequestMessageBuilder(HttpMethod.Get, $"/logstores/{request.Logstorename}") .Query("type", "log") .Query("from", request.From.ToString()) .Query("to", request.To.ToString()) .Query("topic", request.Topic) .Query("query", request.Query) .Query("line", request.Line.ToString()) .Query("offset", request.Offset.ToString()) .Query("reverse", request.Reverse.ToString()), project: request.ProjectName)) .Transform((httpHeaders, data) =>
private static IEnumerable <LogModel> FilterLogs(GetLogsRequest request, IEnumerable <LogModel> logs) { if (!string.IsNullOrEmpty(request.Message)) { logs = logs.Where(l => l.Message != null && l.Message.ToLower().Contains(request.Message.ToLower())); } if (!string.IsNullOrEmpty(request.Level)) { logs = logs.Where(l => l.Level != null && l.Level.ToUpper().Contains(request.Level.ToUpper())); } if (!string.IsNullOrEmpty(request.RequestMethod)) { logs = logs.Where(l => l.RequestMethod != null && l.RequestMethod.ToLower().Contains(request.RequestMethod.ToLower())); } if (!string.IsNullOrEmpty(request.RequestPath)) { logs = logs.Where(l => l.RequestPath != null && l.RequestPath.ToLower().Contains(request.RequestPath.ToLower())); } if (request.StatusCode != null) { logs = logs.Where(l => l.StatusCode == request.StatusCode); } if (!string.IsNullOrEmpty(request.Exception)) { logs = logs.Where(l => l.Exception != null && l.Exception.ToLower().Contains(request.Exception.ToLower())); } if (request.MinTime != null) { logs = logs.Where(l => l.Date >= request.MinTime); } if (request.MaxTime != null) { logs = logs.Where(l => l.Date <= request.MaxTime); } logs = LogSortTypeSmartEnum.FromValue((int)request.SortType).Sort(logs); return(logs); }
public IEnumerable <LogDto> GetLogs(GetLogsRequest request) { foreach (var filePath in Directory.GetFiles("logs").Where(x => Path.GetExtension(x) == ".json")) { using var stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); using var streamReader = new StreamReader(stream); var content = streamReader.ReadToEnd(); var normalizedContent = "[" + content.Trim(",[]".ToCharArray()) + "]"; var logs = JsonConvert.DeserializeObject <IEnumerable <LogDto> >(normalizedContent); foreach (var log in logs.Where(x => this.ShouldReturn(request, x))) { yield return(log); } } }
/// <inheritdoc /> public Task <IPagedList <LogEntry> > GetAllAsync(GetLogsRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } return(Connection.GetAsync <IPagedList <LogEntry> >("logs", null, new Dictionary <string, string> { { "sort", request.Sort }, { "fields", request.Fields }, { "include_fields", request.IncludeFields?.ToString().ToLower() }, { "from", request.From }, { "take", request.Take?.ToString().ToLower() }, { "q", request.Query } }, null, new PagedListConverter <LogEntry>("logs"))); }
public async Task <PagedList <LogModel> > GetLogsFromFile(GetLogsRequest request) { var logsFilePath = BuildLogFilesPath(request.Date); if (!filesManager.FileExists(logsFilePath)) { return(new List <LogModel>().ToPagedList <LogModel>(request.PageNumber, request.PageSize)); } string[] logsJson = await filesManager.ReadFileLines(logsFilePath); ReplaceKeyWordsInJson(ref logsJson); var logs = ConvertLogsFileIntoList(logsJson); logs = FilterLogs(request, logs); return(logs.ToPagedList <LogModel>(request.PageNumber, request.PageSize)); }
public GetLogsResponse Get(GetLogsRequest request) { try { if (request.PageSize == 0) { request.PageSize = 10; } return Mapper.Map<GetLogsResponse>(_logger.GetLogs(Mapper.Map<PagedRequest>(request))); } catch (Exception ex) { return new GetLogsResponse { ErrorLevel = ErrorLevel.Critical, Message = ex.ToString() }; } }
public async Task <IResponse <GetLogsResult> > GetLogsAsync(GetLogsRequest request) { return((await SendRequestAsync <IList <IDictionary <string, string> > >( new HttpRequestMessageBuilder(HttpMethod.Get, $"/logstores/{request.Logstorename}") .Query("type", "log") .Query("from", request.From.ToString()) .Query("to", request.To.ToString()) .Query("topic", request.Topic) .Query("query", request.Query) .Query("line", request.Line.ToString()) .Query("offset", request.Offset.ToString()) .Query("reverse", request.Reverse.ToString()), project: request.ProjectName)) .Transform((httpHeaders, data) => { var newResult = new GetLogsResult(data) { Count = Convert.ToInt32(httpHeaders.GetValueOrDefault(LogHeaders.Count)), ProcessedRows = Convert.ToInt32(httpHeaders.GetValueOrDefault(LogHeaders.ProcessedRows)), ElapsedMillisecond = Convert.ToInt32(httpHeaders.GetValueOrDefault(LogHeaders.ElapsedMillisecond)), HasSql = Convert.ToBoolean(httpHeaders.GetValueOrDefault(LogHeaders.HasSql)), AggQuery = httpHeaders.GetValueOrDefault(LogHeaders.AggQuery), WhereQuery = httpHeaders.GetValueOrDefault(LogHeaders.WhereQuery) }; // Parse Progress if (Enum.TryParse <LogProgressState>(httpHeaders.GetValueOrDefault(LogHeaders.Progress), true, out var progress)) { newResult.Progress = progress; } // Parse QueryInfo if (httpHeaders.TryGetValue(LogHeaders.QueryInfo, out var queryInfoValue)) { newResult.QueryInfo = JsonConvert.DeserializeObject <LogQueryInfo>(queryInfoValue); } return newResult; })); }
public void TestGetLogs() { LogClient client = new LogClient(ClientTestData.TEST_ENDPOINT, ClientTestData.TEST_ACCESSKEYID, ClientTestData.TEST_ACCESSKEY); client.SetWebSend(MockSend); GetLogsRequest request = new GetLogsRequest(); request.Project = ClientTestData.TEST_PROJECT; request.Logstore = "testlogstore"; request.Query = "error"; request.Topic = "mockTopic"; request.From = 1000; request.To = 2000; request.Lines = 200; request.Offset = 0; GetLogsResponse response = client.GetLogs(request); Assert.IsTrue(DicToString(Headers).CompareTo("[x-sls-apiversion:0.4.0][x-sls-bodyrawsize:0][x-sls-signaturemethod:hmac-sha1][User-Agent:aliyun-sdk-dotnet/1.0.0.0]") == 0); Assert.IsTrue(response != null && response.Count == 2); Assert.IsTrue(Host.CompareTo("mock_project.mockhost.aliyuncs.com") == 0); Assert.IsTrue(RequestUri.CompareTo("http://mock_project.mockhost.aliyuncs.com/logstores/testlogstore?type=log&topic=mockTopic&from=1000&to=2000&query=error&line=200&offset=0") == 0); }
private void GetAliyunLog() { LogClient _client = new LogClient(endpoint, accesskey, accessecret); StringBuilder sb = new StringBuilder(); DateTime unixTimestampZeroPoint = new DateTime(1970, 01, 01, 0, 0, 0, DateTimeKind.Utc); DateTime fromStamp = DateTime.UtcNow.AddDays(-1); DateTime toStamp = DateTime.UtcNow; sb.Append("beginTime:" + fromStamp + "--" + "endTime" + toStamp + "\n\n"); uint from = (uint)((fromStamp - unixTimestampZeroPoint).TotalSeconds); uint to = (uint)((toStamp - unixTimestampZeroPoint).TotalSeconds); try { GetLogsRequest req = new GetLogsRequest(projectName, logstore, from, to, "", "ActivityLogTypeName:网站商品PV | select ActivityLogTypeName, Comment, count(1) as count group by Comment,ActivityLogTypeName order by count desc limit 100", int.MaxValue, 0, true); GetLogsResponse res = _client.GetLogs(req); if (res != null && res.IsCompleted()) { foreach (QueriedLog log in res.Logs) { foreach (var item in log.Contents) { sb.Append(item.Key + ";" + item.Value + "\n"); } } } MessageBox.Show(sb.ToString()); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private bool ShouldReturn(GetLogsRequest request, LogDto log) { if (request.FromTime.HasValue && request.FromTime < log.Timestamp) { return(false); } if (request.ToTime.HasValue && request.ToTime > log.Timestamp) { return(false); } if (request.AcceptedLevels != null) { if (request.AcceptedLevels.All(x => x != log.Level)) { return(false); } } if (!string.IsNullOrEmpty(request.Template) && !log.MessageTemplate.Contains(request.Template)) { return(false); } if (request.SearchPhrases != null) { if (log.Properties == null || !log.Properties.Any()) { return(false); } foreach (var searchPhrase in request.SearchPhrases.Where(x => !string.IsNullOrWhiteSpace(x))) { if (log.Properties.All(x => !x.Key.Contains(searchPhrase) && !x.Value.Contains(searchPhrase))) { return(false); } } } return(true); }
/// <summary> /// 扫描日志 /// </summary> /// <param name="request">请求参数信息</param> /// <returns>请求结果信息</returns> public async Task <GetLogsResponse> GetLogs(GetLogsRequest request) { return(await new GetLogsExecutor().Client(this).Execute <GetLogsResponse, GetLogsResult, GetLogsRequest>(request).ConfigureAwait(false)); }
/// <summary> /// 扫描日志 /// </summary> /// <param name="request">请求参数信息</param> /// <returns>请求结果信息</returns> public GetLogsResponse GetLogs(GetLogsRequest request) { return(new GetLogsExecutor().Client(this).Execute <GetLogsResponse, GetLogsResult, GetLogsRequest>(request)); }
static void Main(string[] args) { // select you endpoint https://help.aliyun.com/document_detail/29008.html String endpoint = "cn-shanghai.log.aliyuncs.com", accesskeyId = "", accessKey = "", project = "microex-test1", logstore = "test"; LogClient client = new LogClient(endpoint, accesskeyId, accessKey); //init http connection timeout client.ConnectionTimeout = client.ReadWriteTimeout = 10000; //list logstores foreach (String l in client.ListLogstores(new ListLogstoresRequest(project)).Logstores) { Console.WriteLine(l); } //put logs PutLogsRequest putLogsReqError = new PutLogsRequest(); putLogsReqError.Project = project; putLogsReqError.Topic = "dotnet_topic"; putLogsReqError.Logstore = logstore; putLogsReqError.LogItems = new List <LogItem>(); for (int i = 1; i <= 10; ++i) { LogItem logItem = new LogItem(); logItem.Time = DateUtils.TimeSpan(); for (int k = 0; k < 10; ++k) { logItem.PushBack("error_" + i.ToString(), "invalid operation"); } putLogsReqError.LogItems.Add(logItem); } PutLogsResponse putLogRespError = client.PutLogs(putLogsReqError); Thread.Sleep(5000); //query logs, if query string is "", it means query all data GetLogsRequest getLogReq = new GetLogsRequest(project, logstore, DateUtils.TimeSpan() - 100, DateUtils.TimeSpan(), "dotnet_topic", "", 100, 0, false); GetLogsResponse getLogResp = client.GetLogs(getLogReq); Console.WriteLine("Log count : " + getLogResp.Logs.Count.ToString()); for (int i = 0; i < getLogResp.Logs.Count; ++i) { var log = getLogResp.Logs[i]; Console.WriteLine("Log time : " + DateUtils.GetDateTime(log.Time)); for (int j = 0; j < log.Contents.Count; ++j) { Console.WriteLine("\t" + log.Contents[j].Key + " : " + log.Contents[j].Value); } Console.WriteLine(""); } //query histogram GetHistogramsResponse getHisResp = client.GetHistograms(new GetHistogramsRequest(project, logstore, DateUtils.TimeSpan() - 100, DateUtils.TimeSpan(), "dotnet_topic", "")); Console.WriteLine("Histograms total count : " + getHisResp.TotalCount.ToString()); //list shards ListShardsResponse listResp = client.ListShards(new ListShardsRequest(project, logstore)); Console.WriteLine("Shards count : " + listResp.Shards.Count.ToString()); //batch get logs for (int i = 0; i < listResp.Shards.Count; ++i) { //get cursor String cursor = client.GetCursor(new GetCursorRequest(project, logstore, listResp.Shards[i], ShardCursorMode.BEGIN)).Cursor; Console.WriteLine("Cursor : " + cursor); BatchGetLogsResponse batchGetResp = client.BatchGetLogs(new BatchGetLogsRequest(project, logstore, listResp.Shards[i], cursor, 10)); Console.WriteLine("Batch get log, shard id : " + listResp.Shards[i].ToString() + ", log count : " + batchGetResp.LogGroupList.LogGroupList_Count.ToString()); } }
/// <summary> /// Get The sub set of logs data from sls server which match input /// parameters. /// </summary> /// <param name="request">The get logs request</param> /// <exception>LogException</exception> /// <returns>The get Logs response</returns> public GetLogsResponse GetLogs(GetLogsRequest request) { using (ServiceRequest sReq = new ServiceRequest()) { sReq.Method = HttpMethod.Get; sReq.Endpoint = BuildReqEndpoint(request); //use empty string to replace Logstore if not set by user explicitly string logstore = request.IsSetLogstore() ? request.Logstore : String.Empty; sReq.ResourcePath = LogConsts.RESOURCE_LOGSTORES + LogConsts.RESOURCE_SEPARATOR + logstore; FillCommonHeaders(sReq); FillCommonParameters(sReq); sReq.Parameters.Add(LogConsts.PARAMETER_TYPE, LogConsts.VALUE_TYPE_CONTENT); if (request.IsSetTopic()) { sReq.Parameters.Add(LogConsts.PARAMETER_TOPIC, request.Topic); } if (request.IsSetFrom()) { sReq.Parameters.Add(LogConsts.PARAMETER_FROM, request.From.ToString()); } if (request.IsSetTo()) { sReq.Parameters.Add(LogConsts.PARAMETER_TO, request.To.ToString()); } if (request.IsSetQuery()) { sReq.Parameters.Add(LogConsts.PARAMETER_QUERY, request.Query); } if (request.IsSetLines()) { sReq.Parameters.Add(LogConsts.PARAMETER_LINES, request.Lines.ToString()); } if (request.IsSetOffset()) { sReq.Parameters.Add(LogConsts.PARAMETER_OFFSET, request.Offset.ToString()); } if (request.IsSetReverse()) { sReq.Parameters.Add(LogConsts.PARAMETER_REVERSE, request.Reverse.ToString()); } ExecutionContext context = new ExecutionContext(); context.Signer = new LogRequestSigner(sReq.ResourcePath, HttpMethod.Get); context.Credentials = new ServiceCredentials(this.AccessKeyId, this.AccessKey); using (ServiceResponse response = serviceClient.Send(sReq, context)) { LogClientTools.ResponseErrorCheck(response, context.Credentials); JArray body = LogClientTools.ParserResponseToJArray(response.Content); GetLogsResponse res = new GetLogsResponse(response.Headers, body); return(res); } } }
public async Task <ActionResult <GetLogsResult> > GetLogs([FromRoute] int id, [FromQuery] GetLogsRequest request) { if (!await _accessTokenRepository.IsScopeAsync(_authManager.ApiToken, Constants.ScopeUsers)) { return(Unauthorized()); } var user = await _userRepository.GetByUserIdAsync(id); if (user == null) { return(NotFound()); } var top = request.Top; if (top <= 0) { top = 20; } var skip = request.Skip; var logs = await _logRepository.GetUserLogsAsync(user.Id, skip, top); return(new GetLogsResult { Count = await _userRepository.GetCountAsync(), Logs = logs }); }
public GetLogsResponse GetLogs(GetLogsRequest request) { return(Execute(() => InternalService.GetLogs(request))); }
public GetLogsResponse GetLogs(GetLogsRequest request) { return(ExecuteAction <GetLogsResponse>(request)); }
public void FT() { LogClient client = new LogClient("sls-failover.alibaba-inc.com", "", ""); uint topicFlag = DateUtils.TimeSpan(); int PUT_COUNT = 20, TOPIC_COUNT = 10, LOGITEM_COUNT = 20, CONTENT_COUNT = 10, SLEEP_INTERVAL = 2, SLEEP_TIME = 500; for (int j = 1; j <= PUT_COUNT; ++j) { PutLogsRequest putLogsReqError = new PutLogsRequest(); putLogsReqError.Project = "ali-winlogtail-project"; putLogsReqError.Topic = "dotnet_topic_" + topicFlag + "_" + (j % TOPIC_COUNT); putLogsReqError.Logstore = "sls-logstore-002"; putLogsReqError.LogItems = new List <LogItem>(); for (int i = 1; i <= LOGITEM_COUNT; ++i) { LogItem logItem = new LogItem(); logItem.Time = (uint)(topicFlag + j); for (int k = 0; k < CONTENT_COUNT; ++k) { logItem.PushBack("error_" + (j % TOPIC_COUNT) + "_" + k, "invalid operation: " + i * j); } putLogsReqError.LogItems.Add(logItem); } PutLogsResponse putLogRespError = client.PutLogs(putLogsReqError); if (j % SLEEP_INTERVAL == 0) { Thread.Sleep(SLEEP_TIME); } } Thread.Sleep(50 * 1000); ListLogstoresRequest req = new ListLogstoresRequest(); req.Project = "ali-winlogtail-project"; ListLogstoresResponse res = client.ListLogstores(req); HashSet <String> logstoresSet = new HashSet <string>(res.Logstores); Assert.IsTrue(logstoresSet.Contains("sls-logstore-002")); ListTopicsRequest topicReq = new ListTopicsRequest(); topicReq.Project = "ali-winlogtail-project"; topicReq.Logstore = "sls-logstore-002"; topicReq.Lines = TOPIC_COUNT; topicReq.Token = "dotnet_topic_" + topicFlag + "_"; ListTopicsResponse lstTopicsRequest = client.ListTopics(topicReq); Assert.IsTrue(lstTopicsRequest.Count >= TOPIC_COUNT); HashSet <String> topicSet = new HashSet <string>(lstTopicsRequest.Topics); for (int i = 0; i < TOPIC_COUNT; ++i) { Assert.IsTrue(topicSet.Contains("dotnet_topic_" + topicFlag + "_" + i)); } Thread.Sleep(SLEEP_TIME); for (int i = 0; i < TOPIC_COUNT; ++i) { GetHistogramsRequest histReq = new GetHistogramsRequest(); histReq.Project = "ali-winlogtail-project"; histReq.Logstore = "sls-logstore-002"; histReq.Topic = "dotnet_topic_" + topicFlag + "_" + i; histReq.To = (uint)(topicFlag + PUT_COUNT + 1); histReq.From = (uint)topicFlag; GetHistogramsResponse histResp = client.GetHistograms(histReq); Assert.IsTrue(histResp.TotalCount == (PUT_COUNT / TOPIC_COUNT) * LOGITEM_COUNT); if ((i + 1) % SLEEP_INTERVAL == 0) { Thread.Sleep(SLEEP_TIME); } } Thread.Sleep(SLEEP_TIME); for (int i = 0; i < TOPIC_COUNT; ++i) { for (int k = 0; k < 2; ++k) { GetHistogramsRequest histReq = new GetHistogramsRequest(); histReq.Project = "ali-winlogtail-project"; histReq.Logstore = "sls-logstore-002"; histReq.Topic = "dotnet_topic_" + topicFlag + "_" + i; histReq.Query = "error_" + i + "_" + k; histReq.To = (uint)(topicFlag + PUT_COUNT + 1); histReq.From = (uint)topicFlag; GetHistogramsResponse histResp = client.GetHistograms(histReq); Assert.IsTrue(histResp.TotalCount == (PUT_COUNT / TOPIC_COUNT) * LOGITEM_COUNT); if ((k + 1) * (i + 1) % SLEEP_INTERVAL == 0) { Thread.Sleep(SLEEP_TIME); } } } Thread.Sleep(SLEEP_TIME); for (int i = 0; i < TOPIC_COUNT; ++i) { GetLogsRequest getLogsReq = new GetLogsRequest(); getLogsReq.Project = "ali-winlogtail-project"; getLogsReq.Logstore = "sls-logstore-002"; getLogsReq.Topic = "dotnet_topic_" + topicFlag + "_" + i; getLogsReq.Lines = 120; getLogsReq.To = (uint)(topicFlag + PUT_COUNT + 1); getLogsReq.From = (uint)topicFlag; GetLogsResponse getLogsResp = client.GetLogs(getLogsReq); Assert.IsTrue(getLogsResp.Count == (PUT_COUNT / TOPIC_COUNT) * LOGITEM_COUNT); String logs = getLogsResp.Print(); for (int m = 0; m < CONTENT_COUNT; ++m) { String dstStr = "error_" + i + "_" + m; Assert.IsTrue(ChildStringOccurTimes(logs, dstStr) == getLogsResp.Count); } if ((i + 1) % SLEEP_INTERVAL == 0) { Thread.Sleep(SLEEP_TIME); } } Thread.Sleep(SLEEP_TIME); for (int i = 0; i < TOPIC_COUNT; ++i) { for (int k = 0; k < 2; ++k) { GetLogsRequest getLogsReq = new GetLogsRequest(); getLogsReq.Project = "ali-winlogtail-project"; getLogsReq.Logstore = "sls-logstore-002"; getLogsReq.Topic = "dotnet_topic_" + topicFlag + "_" + i; getLogsReq.Query = "error_" + i + "_" + k; getLogsReq.Lines = 120; getLogsReq.To = (uint)(topicFlag + PUT_COUNT + 1); getLogsReq.From = (uint)topicFlag; GetLogsResponse getLogsResp = client.GetLogs(getLogsReq); Assert.IsTrue(getLogsResp.Count == (PUT_COUNT / TOPIC_COUNT) * LOGITEM_COUNT); String logs = getLogsResp.Print(); for (int m = 0; m < CONTENT_COUNT; ++m) { String dstStr = "error_" + i + "_" + m; Assert.IsTrue(ChildStringOccurTimes(logs, dstStr) == getLogsResp.Count); } if ((k + 1) * (i + 1) % SLEEP_INTERVAL == 0) { Thread.Sleep(SLEEP_TIME); } } } Console.WriteLine(); }
public void TestException() { LogClient client = new LogClient(ClientTestData.TEST_ENDPOINT, ClientTestData.TEST_ACCESSKEYID, ClientTestData.TEST_ACCESSKEY); client.SetWebSend(MockSend); //server error try { GetLogsRequest request = new GetLogsRequest(); request.Project = ClientTestData.TEST_PROJECT; request.Logstore = "server_error_return"; request.Query = "error"; request.Topic = "mockTopic"; request.From = 1000; request.To = 2000; request.Lines = 200; request.Offset = 0; GetLogsResponse response = null; response = client.GetLogs(request); Assert.Fail("server exception is not triggered"); } catch (LogException exp) { Assert.IsTrue(exp.ErrorCode.CompareTo("SLSServerErrorTest") == 0); } //json error try { GetLogsRequest request = new GetLogsRequest(); request.Project = ClientTestData.TEST_PROJECT; request.Logstore = "response_json_error_field"; request.Query = "error"; request.Topic = "mockTopic"; request.From = 1000; request.To = 2000; request.Lines = 200; request.Offset = 0; GetLogsResponse response = null; response = client.GetLogs(request); Assert.Fail("json exception is not triggered"); } catch (LogException exp) { Assert.IsTrue(exp.ErrorCode.CompareTo("SLSBadResponse") == 0); } try { GetLogsRequest request = new GetLogsRequest(); request.Project = ClientTestData.TEST_PROJECT; request.Logstore = "response_json_error_format"; request.Query = "error"; request.Topic = "mockTopic"; request.From = 1000; request.To = 2000; request.Lines = 200; request.Offset = 0; GetLogsResponse response = null; response = client.GetLogs(request); Assert.Fail("json exception is not triggered"); } catch (LogException exp) { Assert.IsTrue(exp.ErrorCode.CompareTo("SLSBadResponse") == 0); } //response stream error try { GetLogsRequest request = new GetLogsRequest(); request.Project = ClientTestData.TEST_PROJECT; request.Logstore = "response_stream_error"; request.Query = "error"; request.Topic = "mockTopic"; request.From = 1000; request.To = 2000; request.Lines = 200; request.Offset = 0; GetLogsResponse response = null; response = client.GetLogs(request); Assert.Fail("io exception is not triggered"); } catch (LogException exp) { Assert.IsTrue(exp.ErrorCode.CompareTo("SLSBadResponse") == 0); } }
static void Main(string[] args) { // select you endpoint https://help.aliyun.com/document_detail/29008.html String endpoint = "http://cn-hangzhou.log.aliyuncs.com", accesskeyId = "", //阿里云授权id accessKey = "", //阿里云授权Key project = "", //项目名称,每个项目可以创建10个日志库 logstore = ""; //日志库 //int shardId = 0;//分区id LogClient client = new LogClient(endpoint, accesskeyId, accessKey); //init http connection timeout client.ConnectionTimeout = client.ReadWriteTimeout = 10000; //list logstores foreach (String l in client.ListLogstores(new ListLogstoresRequest(project)).Logstores) { Console.WriteLine(l); } //put logs PutLogsRequest putLogsReqError = new PutLogsRequest { Project = project, Topic = "dotnet_topic", Logstore = logstore, LogItems = new List <LogItem>() }; for (int i = 1; i <= 10; ++i) { LogItem logItem = new LogItem { Time = DateUtils.TimeSpan() }; for (int k = 0; k < 10; ++k) { logItem.PushBack("info", "GetLogs 接口查询指定 Project 下某个 Logstore 中的日志数据。还可以通过指定相关参数仅查询符合指定条件的日志数据。"); } putLogsReqError.LogItems.Add(logItem); } PutLogsResponse putLogRespError = client.PutLogs(putLogsReqError); Thread.Sleep(5000); //query logs, if query string is "", it means query all data GetLogsRequest getLogReq = new GetLogsRequest(project, logstore, DateUtils.TimeSpan() - 100, DateUtils.TimeSpan(), "dotnet_topic", "", 100, 0, false); GetLogsResponse getLogResp = client.GetLogs(getLogReq); Console.WriteLine("Log count : " + getLogResp.Logs.Count.ToString()); for (int i = 0; i < getLogResp.Logs.Count; ++i) { var log = getLogResp.Logs[i]; Console.WriteLine("Log time : " + DateUtils.GetDateTime(log.Time)); for (int j = 0; j < log.Contents.Count; ++j) { Console.WriteLine("\t" + log.Contents[j].Key + " : " + log.Contents[j].Value); } Console.WriteLine(""); } //query histogram GetHistogramsResponse getHisResp = client.GetHistograms(new GetHistogramsRequest(project, logstore, DateUtils.TimeSpan() - 100, DateUtils.TimeSpan(), "dotnet_topic", "")); Console.WriteLine("Histograms total count : " + getHisResp.TotalCount.ToString()); //list shards ListShardsResponse listResp = client.ListShards(new ListShardsRequest(project, logstore)); Console.WriteLine("Shards count : " + listResp.Shards.Count.ToString()); //batch get logs for (int i = 0; i < listResp.Shards.Count; ++i) { //get cursor String cursor = client.GetCursor(new GetCursorRequest(project, logstore, listResp.Shards[i], ShardCursorMode.BEGIN)).Cursor; Console.WriteLine("Cursor : " + cursor); BatchGetLogsResponse batchGetResp = client.BatchGetLogs(new BatchGetLogsRequest(project, logstore, listResp.Shards[i], cursor, 10)); Console.WriteLine("Batch get log, shard id : " + listResp.Shards[i].ToString() + ", log count : " + batchGetResp.LogGroupList.LogGroupList_Count.ToString()); } Console.ReadKey(); }