You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.8 KiB
99 lines
2.8 KiB
/*
|
|
* Copyright (C) Alibaba Cloud Computing
|
|
* All rights reserved.
|
|
*
|
|
* 版权所有 (C)阿里云计算有限公司
|
|
*/
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using Aliyun.Api.LOG.Utilities;
|
|
|
|
namespace Aliyun.Api.LOG.Data
|
|
{
|
|
/// <summary>
|
|
/// QuriedLog used to present a log in query result. It contains log time, log source(ip/hostname,e.g),
|
|
/// and multiple of key/value pairs to present the log content
|
|
/// </summary>
|
|
public class QueriedLog
|
|
{
|
|
private UInt32 _time;
|
|
private String _source = String.Empty;
|
|
private List<LogContent> _contents = new List<LogContent>();
|
|
|
|
/// <summary>
|
|
/// The log timestamp
|
|
/// </summary>
|
|
public UInt32 Time
|
|
{
|
|
get { return _time; }
|
|
set { _time = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// The log source
|
|
/// </summary>
|
|
public String Source
|
|
{
|
|
get { return _source; }
|
|
set { _source = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// List of key/value pair to present the log content
|
|
/// </summary>
|
|
public List<LogContent> Contents
|
|
{
|
|
get { return _contents; }
|
|
set { _contents = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// default constructor
|
|
/// </summary>
|
|
public QueriedLog()
|
|
{
|
|
|
|
}
|
|
|
|
internal static List<QueriedLog> DeserializeFromJson(JArray json)
|
|
{
|
|
List<QueriedLog> logs = new List<QueriedLog>();
|
|
for (int i = 0; i < json.Count; ++i)
|
|
{
|
|
QueriedLog log = new QueriedLog();
|
|
log._time = (UInt32)json[i][LogConsts.NAME_GETDATA_TIME];
|
|
log._source = (String)json[i][LogConsts.NAME_GETDATA_SOURCE];
|
|
log._contents = new List<LogContent>();
|
|
foreach (var item in json[i].Children<JProperty>())
|
|
{
|
|
if (item.Name.CompareTo(LogConsts.NAME_GETDATA_TIME) != 0 && item.Name.CompareTo(LogConsts.NAME_GETDATA_SOURCE) != 0)
|
|
{
|
|
log._contents.Add(new LogContent(item.Name, (String)json[i][item.Name]));
|
|
}
|
|
}
|
|
logs.Add(log);
|
|
}
|
|
return logs;
|
|
}
|
|
|
|
//used only in testing project
|
|
internal String Print()
|
|
{
|
|
StringBuilder strBuilder = new StringBuilder();
|
|
if (_contents != null)
|
|
{
|
|
for (int i = 0; i < _contents.Count; ++i)
|
|
{
|
|
strBuilder.Append("(" + _contents[i].Key + "," + _contents[i].Value + ")");
|
|
}
|
|
}
|
|
|
|
return strBuilder.ToString();
|
|
}
|
|
}
|
|
}
|
|
|