第三方可以直接通过调用该接口,将工具日志发送到服务云。
授权说明
需要授权 身份认证2.0
正式:https://zenith.fdcyun.com/v20/api/metrics/transfer/tool-log.svc
测试:https://planet-test.fdcyun.com/v20/api/metrics/transfer/tool-log.svc
批量上传正式地址:https://zenith.fdcyun.com/v20/api/metrics/transfer/tool-log-list.svc
使用批量上传是body是下列实例的对象数组(建议使用批量上传,记录数不能超过1000条)
x-token:xxxxx //调用服务云[认证接口]得到的token,未传输此头的请求无法获取数据
x-custid:xxxx //客户主数据GUID
Content-Type: application/json; charset=utf-8
{
"key": "value",
"key": "value",
"key": "value",
"key": "value",
"key": "value",
"key": "value",
"key": "value",
"key": "value",
"key": "value",
"key": "value",
"key": "value",
"key": "value"
}
成功返回,http状态码为 200
返回0 :表示成功接收到数据并加入队列
失败返回,http状态码为 500
{ "Message": "应用ID不存在", "ExceptionType":"System.Exception", "xxx": "xxx" //后续扩展 }
其他http状态码说明
代码 | 说明 | 附加说明 |
---|---|---|
200 | 请求成功 | |
403 | 未授权 | |
500 | 具体错误信息 |
推荐参考下面的结构
namespace TianXiang.Common.Data
{
/// <summary>
/// 日志记录的数据结构
/// </summary>
#if LOGSERVICE
[Nest.ElasticsearchType(IdProperty = nameof(OprId))]
#endif
public sealed class OprLog
{
/// <summary>
/// 操作类别,例如:httpin,consumer
/// </summary>
public string OprKind { get; set; }
/// <summary>
/// 操作ID,例如: RequestId or MessageId
/// </summary>
public string OprId { get; set; }
/// <summary>
/// 操作名称,例如:ExecuteNonQuery or StringSet
/// </summary>
public string OprName { get; set; }
/// <summary>
/// parent OprId
/// </summary>
public string ParentId { get; set; }
/// <summary>
///
/// </summary>
public string RootId { get; set; }
/// <summary>
/// 开始执行时间
/// </summary>
#if LOGSERVICE
[Nest.Date(Format = "yyyy-MM-dd HH:mm:ss.ffff")]
#endif
public DateTime StartTime { get; set; }
/// <summary>
/// 本次操作的持续执行时间,单位:毫秒
/// </summary>
public long Duration { get; set; }
/// <summary>
/// 操作的执行状态。
/// 对于HTTP请求,就用响应的状态码来填充,非WEB类的操作,200成功,500失败
/// </summary>
public int Status { get; set; }
/// <summary>
/// 指示当前操作是否超出性能阀值。
/// </summary>
public int IsSlow { get; set; }
/// <summary>
/// 指示当前操作是否出现异常,属于冗余字段,方便查询。
/// </summary>
public int HasError { get; set; }
/// <summary>
///
/// </summary>
public string TenantId { get; set; }
/// <summary>
///
/// </summary>
public string UserId { get; set; }
/// <summary>
///
/// </summary>
public string UserCode { get; set; }
/// <summary>
///
/// </summary>
public string UserName { get; set; }
/// <summary>
///
/// </summary>
public string UserRole { get; set; }
/// <summary>
/// 业务ID,例如:工作流的流程ID
/// </summary>
public string BizId { get; set; }
/// <summary>
/// 业务操作名称,例如:某个工作流的节点名称
/// </summary>
public string BizName { get; set; }
/// <summary>
/// 请求对应的业务功能描述,例如:销售系统>交易管理>交易台账>交易列表页面
/// </summary>
public string BizFuncs { get; set; }
/// <summary>
///
/// </summary>
public string HttpMethod { get; set; }
/// <summary>
///
/// </summary>
public string Url { get; set; }
/// <summary>
///
/// </summary>
public string UserAgent { get; set; }
/// <summary>
///
/// </summary>
public string HttpRef { get; set; }
/// <summary>
/// HTTP响应 的ContentType
/// </summary>
public string RespContType { get; set; }
/// <summary>
/// 一级模块名称
/// </summary>
public string Module { get; set; }
/// <summary>
/// 二级模块名称
/// </summary>
public string Controller { get; set; }
/// <summary>
/// 三级模块名称
/// </summary>
public string Action { get; set; }
/// <summary>
/// 异常类型
/// </summary>
public string ExType { get; set; }
/// <summary>
/// 异常消息
/// </summary>
public string ExMessage { get; set; }
/// <summary>
/// 可理解为 ex.ToString()
/// </summary>
public string ExAll { get; set; }
/// <summary>
/// 在性能日志中记录所有耗时的操作
/// </summary>
public string OprDetails { get; set; }
/// <summary>
/// 引发当前操作执行的数据,
/// 例如:HttpRequest, Message
/// </summary>
public string CtxData { get; set; }
/// <summary>
/// 附加信息
/// </summary>
public string Addition { get; set; }
/// <summary>
/// 应用程序名称
/// </summary>
public string AppName { get; set; }
/// <summary>
/// 应用程序路径
/// </summary>
public string AppPath { get; set; }
/// <summary>
/// 应用程序版本
/// </summary>
public string AppVersion { get; set; }
/// <summary>
/// 机器名称
/// </summary>
public string HostName { get; set; }
/// <summary>
/// 环境名称
/// </summary>
public string EnvName { get; set; }
}
}