/// <summary> /// This API allows ingesting logs associated with a logId. A success /// response implies the data has been accepted. /// /// </summary> /// <param name="request">The request object containing the details to send. Required.</param> /// <param name="retryConfiguration">The retry configuration that will be used by to send this request. Optional.</param> /// <param name="cancellationToken">The cancellation token to cancel this operation. Optional.</param> /// <returns>A response object containing details about the completed operation</returns> /// <example>Click <a href="https://docs.cloud.oracle.com/en-us/iaas/tools/dot-net-examples/latest/loggingingestion/PutLogs.cs.html">here</a> to see an example of how to use PutLogs API.</example> public async Task <PutLogsResponse> PutLogs(PutLogsRequest request, RetryConfiguration retryConfiguration = null, CancellationToken cancellationToken = default) { logger.Trace("Called putLogs"); Uri uri = new Uri(this.restClient.GetEndpoint(), System.IO.Path.Combine(basePathWithoutHost, "/logs/{logId}/actions/push".Trim('/'))); HttpMethod method = new HttpMethod("POST"); HttpRequestMessage requestMessage = Converter.ToHttpRequestMessage(uri, method, request); requestMessage.Headers.Add("Accept", "application/json"); GenericRetrier retryingClient = Retrier.GetPreferredRetrier(retryConfiguration, this.retryConfiguration); HttpResponseMessage responseMessage; try { if (retryingClient != null) { responseMessage = await retryingClient.MakeRetryingCall(this.restClient.HttpSend, requestMessage, cancellationToken).ConfigureAwait(false); } else { responseMessage = await this.restClient.HttpSend(requestMessage).ConfigureAwait(false); } this.restClient.CheckHttpResponseMessage(requestMessage, responseMessage); return(Converter.FromHttpResponseMessage <PutLogsResponse>(responseMessage)); } catch (Exception e) { logger.Error($"PutLogs failed with error: {e.Message}"); throw; } }
protected override void ProcessRecord() { base.ProcessRecord(); PutLogsRequest request; try { request = new PutLogsRequest { LogId = LogId, PutLogsDetails = PutLogsDetails, TimestampOpcAgentProcessing = TimestampOpcAgentProcessing, OpcAgentVersion = OpcAgentVersion, OpcRequestId = OpcRequestId }; response = client.PutLogs(request).GetAwaiter().GetResult(); WriteOutput(response); FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
private static async Task PutLogDetails(LoggingClient loggingClient, string logId) { PutLogsRequest putLogsRequest = new PutLogsRequest { LogId = logId, PutLogsDetails = new PutLogsDetails { Specversion = "1.0", LogEntryBatches = new List <Oci.LoggingingestionService.Models.LogEntryBatch> { new Oci.LoggingingestionService.Models.LogEntryBatch { Entries = new List <Oci.LoggingingestionService.Models.LogEntry> { new Oci.LoggingingestionService.Models.LogEntry { Data = "oci-dotnet-sdk-example-data-Value", Id = "c3964883-4bb9-45b0-b634-3e66eb119c43" } }, Source = "oci-dotnet-sdk-example-source", Type = "oci-dotnet-sdk-example-type", Subject = "oci-dotnet-sdk-example-subject-Value", Defaultlogentrytime = DateTime.Parse("12/09/2020 20:49:14") } } } }; PutLogsResponse putLogsResponse = await loggingClient.PutLogs(putLogsRequest); logger.Info($"PutLog OpcRequestId:{putLogsResponse.OpcRequestId}"); }
public virtual void PutLogs(String topic, IEnumerable <Object>[] logs) { if (String.IsNullOrWhiteSpace(topic) || logs == null || logs.Length == 0) { throw new ArgumentException("topic or logs must not be null or empty!"); } var putLogsReqError = new PutLogsRequest { Project = _config.Project, Topic = topic, Logstore = _config.Logstore, LogItems = new List <LogItem>() }; foreach (var l in logs) { LogItem logItem = new LogItem { Time = DateUtils.TimeSpan(), Contents = l.ToLogContents() }; putLogsReqError.LogItems.Add(logItem); } Client.PutLogs(putLogsReqError); }
static void Main(string[] args) { String endpoint = "http://cn-hangzhou-failover-intranet.sls.aliyuncs.com", accesskeyId = "", accessKey = "", project = "", logstore = ""; int shardId = 0; 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_", "invalid operation"); } putLogsReqError.LogItems.Add(logItem); } PutLogsResponse putLogRespError = client.PutLogs(putLogsReqError); //query logs client.GetLogs(new GetLogsRequest(project, logstore, DateUtils.TimeSpan() - 10, DateUtils.TimeSpan())); //query histogram client.GetHistograms(new GetHistogramsRequest(project, logstore, DateUtils.TimeSpan() - 10, DateUtils.TimeSpan())); //list shards client.ListShards(new ListShardsRequest(project, logstore)); //get cursor String cursor = client.GetCursor(new GetCursorRequest(project, logstore, shardId, ShardCursorMode.BEGIN)).Cursor; Console.WriteLine(cursor); //batch get logs, loghub interface BatchGetLogsResponse response = client.BatchGetLogs(new BatchGetLogsRequest(project, logstore, shardId, cursor, 10)); //list topic client.ListTopics(new ListTopicsRequest(project, logstore)); //*/ }
private void Consume() { try { var logContexts = this.RecreateList(); if (logContexts != null && logContexts.Count > 0) { var putLogsRequest = new PutLogsRequest(); putLogsRequest.Project = this.project; putLogsRequest.Topic = this.appInfo.GetAppName(); putLogsRequest.Logstore = this.logstore; putLogsRequest.LogItems = logContexts.ToList(); this.client.PutLogs(putLogsRequest); } } finally { } }
internal PutLogsResponse PutLogs(PutLogsRequest request, LogGroup logGroup) { if (logGroup.LogsCount > LogConsts.LIMIT_LOG_COUNT) { throw new LogException("InvalidLogSize", "logItems' length exceeds maximum limitation: " + LogConsts.LIMIT_LOG_COUNT + " lines."); } else if (logGroup.SerializedSize > LogConsts.LIMIT_LOG_SIZE) { throw new LogException("InvalidLogSize", "logItems' size exceeds maximum limitation: " + LogConsts.LIMIT_LOG_SIZE + " byte."); } ServiceRequest sReq = new ServiceRequest(); sReq.Method = HttpMethod.Post; 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.Headers.Add(LogConsts.NAME_HEADER_CONTENTTYPE, LogConsts.PBVALUE_HEADER_CONTENTTYPE); byte[] logBytes = logGroup.ToByteArray(); sReq.Headers[LogConsts.NAME_HEADER_BODYRAWSIZE] = logBytes.Length.ToString(); sReq.Headers.Add(LogConsts.NAME_HEADER_COMPRESSTYPE, LogConsts.VALUE_HEADER_COMPRESSTYPE_LZ4); logBytes = LogClientTools.CompressToLz4(logBytes); sReq.Headers.Add(LogConsts.NAME_HEADER_MD5, LogClientTools.GetMd5Value(logBytes)); sReq.Content = new MemoryStream(logBytes); ExecutionContext context = new ExecutionContext(); context.Signer = new LogRequestSigner(sReq.ResourcePath, HttpMethod.Post); context.Credentials = new ServiceCredentials(this.AccessKeyId, this.AccessKey); using (ServiceResponse response = serviceClient.Send(sReq, context)) { LogClientTools.ResponseErrorCheck(response, context.Credentials); PutLogsResponse putLogResp = new PutLogsResponse(response.Headers); return(putLogResp); } }
protected override void Write(LogEventInfo logEvent) { var req = new PutLogsRequest("GrpcService", "EntityFramework") { LogItems = new List <LogItem>(), Topic = logEvent.LoggerName }; req.LogItems.Add(new LogItem() { Time = GetTimeSpan(), Contents = new List <LogContent> { new LogContent("Message", logEvent.Message), new LogContent("Time", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")) } }); _aliyunLogClient.PutLogs(req); }
protected override void Write(LogEventInfo logEvent) { var logmodel = JsonConvert.DeserializeObject <AliyunLogModel>(logEvent.Message); var content = logmodel.Content; var project = logmodel.Project; var logstore = logmodel.LogStore; var topic = logmodel.Topic; var req = new PutLogsRequest(project, logstore) { LogItems = new List <LogItem>(), Topic = topic }; req.LogItems.Add(new LogItem() { Time = GetTimeSpan(), Contents = content.Select(p => new LogContent(p.Key, p.Value)).ToList() }); req.LogItems[0].Contents = req.LogItems[0].Contents.Where(p => !string.IsNullOrWhiteSpace(p.Value)).ToList(); _aliyunLogClient.PutLogs(req); }
/// <summary> /// put logs into sls server /// </summary> /// <param name="request">The request to put logs </param> /// <exception>LogException</exception> /// <returns>The response to put logs</returns> public PutLogsResponse PutLogs(PutLogsRequest request) { LogGroup.Builder lgBuilder = LogGroup.CreateBuilder(); if (request.IsSetTopic()) { lgBuilder.Topic = request.Topic; } if (request.IsSetSource()) { lgBuilder.Source = request.Source; } else { lgBuilder.Source = _localMachinePrivateIp; //use default machine private ip as source (should we } if (request.IsSetLogItems()) { foreach (var item in request.LogItems) { Log.Builder logBuilder = Log.CreateBuilder(); logBuilder.Time = item.Time; foreach (var kv in item.Contents) { Log.Types.Content.Builder contentBuilder = Log.Types.Content.CreateBuilder(); contentBuilder.Key = kv.Key; contentBuilder.Value = kv.Value; logBuilder.AddContents(contentBuilder); } lgBuilder.AddLogs(logBuilder); } } return(PutLogs(request, lgBuilder.Build())); }
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()); } }
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(); }
private static void Test3() { string endpoint = "http://cn-shenzhen.log.aliyuncs.com"; //选择与上面步骤创建 project 所属区域匹配的日志服务 Endpoint string accessKeyId = "LTAIAEMVSMtDaRcn"; //使用你的阿里云访问秘钥 AccessKeyId string accessKeySecret = "u6CgiFiWd6ahL8ux4fRd7tWmiHmDhH"; //使用你的阿里云访问秘钥 AccessKeySecret string project = "henry-hyh-logservice"; //上面步骤创建的项目名称 string logstore = "henry-hyh-logstore"; //上面步骤创建的日志库名称 int shardId = 0; LogClient client = new LogClient(endpoint, accessKeyId, accessKeySecret); //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 DateTime unixTimestampZeroPoint = new DateTime(1970, 01, 01, 0, 0, 0, DateTimeKind.Utc); 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 = (uint)((DateTime.UtcNow - unixTimestampZeroPoint).TotalSeconds); for (int k = 0; k < 10; ++k) { logItem.PushBack("error_", "invalid operation_" + i + "_" + k); } putLogsReqError.LogItems.Add(logItem); } PutLogsResponse putLogRespError = client.PutLogs(putLogsReqError); Console.WriteLine("RequestId = {0}", putLogRespError.GetRequestId()); DateTime fromStamp = DateTime.UtcNow - new TimeSpan(0, 10, 0); DateTime toStamp = DateTime.UtcNow; uint from = (uint)((fromStamp - unixTimestampZeroPoint).TotalSeconds); uint to = (uint)((toStamp - unixTimestampZeroPoint).TotalSeconds); GetCursorResponse cursorResponse = client.GetCursor(new GetCursorRequest(project, logstore, shardId, ShardCursorMode.BEGIN)); var beginCursor = cursorResponse.Cursor; cursorResponse = client.GetCursor(new GetCursorRequest(project, logstore, shardId, ShardCursorMode.END)); var endCursor = cursorResponse.Cursor; var curCusor = beginCursor; while (curCusor != endCursor) { BatchGetLogsResponse batchResponse = client.BatchGetLogs(new BatchGetLogsRequest(project, logstore, shardId, curCusor, 10)); curCusor = batchResponse.NextCursor; var logGroups = batchResponse.LogGroupList; foreach (var logGroup in logGroups.LogGroupList_List) { Console.WriteLine("Source = " + logGroup.Source); Console.WriteLine("Topic = " + logGroup.Topic); foreach (var log in logGroup.LogsList) { Console.WriteLine("Time = " + log.Time); foreach (var content in log.ContentsList) { Console.WriteLine("{0} : {1}", content.Key, content.Value); } } } } Console.WriteLine("Finish"); Console.ReadKey(); }
private static void Test() { // string endpoint = "http://cn-hangzhou-failover-intranet.sls.aliyuncs.com", string endpoint = "http://cn-shenzhen.log.aliyuncs.com", accesskeyId = "LTAIAEMVSMtDaRcn", accessKey = "u6CgiFiWd6ahL8ux4fRd7tWmiHmDhH", project = "henry-hyh-logservice", logstore = "henry-hyh-logstore"; int shardId = 0; 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>(); DateTime unixTimestampZeroPoint = new DateTime(1970, 01, 01, 0, 0, 0, DateTimeKind.Utc); for (int i = 1; i <= 10; ++i) { LogItem logItem = new LogItem(); logItem.Time = (uint)((DateTime.UtcNow - unixTimestampZeroPoint).TotalSeconds); for (int k = 0; k < 10; ++k) { logItem.PushBack("error_", "invalid operation"); } putLogsReqError.LogItems.Add(logItem); } PutLogsResponse putLogRespError = client.PutLogs(putLogsReqError); DateTime fromStamp = DateTime.UtcNow - new TimeSpan(0, 10, 0); DateTime toStamp = DateTime.UtcNow; uint from = (uint)((fromStamp - unixTimestampZeroPoint).TotalSeconds); uint to = (uint)((toStamp - unixTimestampZeroPoint).TotalSeconds); //query logs client.GetLogs(new GetLogsRequest(project, logstore, from, to)); //query histogram client.GetHistograms(new GetHistogramsRequest(project, logstore, from, to)); //list shards client.ListShards(new ListShardsRequest(project, logstore)); //get cursor string cursor = client.GetCursor(new GetCursorRequest(project, logstore, shardId, ShardCursorMode.BEGIN)).Cursor; Console.WriteLine(cursor); //batch get logs, loghub interface BatchGetLogsResponse response = client.BatchGetLogs(new BatchGetLogsRequest(project, logstore, shardId, cursor, 10)); //list topic client.ListTopics(new ListTopicsRequest(project, logstore)); Console.WriteLine("Finish"); Console.ReadKey(); }
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(); }