Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 3
0
        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}");
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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));
            //*/
        }
Esempio n. 6
0
 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 { }
 }
Esempio n. 7
0
        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);
        }
Esempio n. 10
0
        /// <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()));
        }
Esempio n. 11
0
        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();
        }
Esempio n. 13
0
        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();
        }
Esempio n. 14
0
        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();
        }
Esempio n. 15
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();
        }