kalveygroup.com – In this post, we will cover a sample code on how to connect your Alibaba Cloud Log Service with custom software using .NET, specifically C# programming language.
The sample code aims to help fellow developer to create their own system.
1. List Logs
String endpoint = "your project region endpoint",
accesskeyId = "your accesskey id",
accessKey = "your access key",
project = "",
logstore = "";
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);
}
2. 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);
3. Query Logs
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("");
}
4. 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());
5. Get Shards
ListShardsResponse listResp = client.ListShards(new ListShardsRequest(project, logstore));
Console.WriteLine("Shards count : " + listResp.Shards.Count.ToString());
6. Get Logs (Batch)
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());
}