public class AliyunLogUtil extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
int |
cacheLogMaxNumber |
int |
cacheLogMaxTime |
com.aliyun.openservices.log.Client |
client |
int |
lastSubmitTime |
Vector<com.aliyun.openservices.log.common.LogItem> |
logGroupCache
提交日志的累计条数,当
#logGroup内的日志条数累计到这里指定的条数时,才回提交到阿里云日志服务中去 |
String |
project |
int |
stack_trace_deep |
| 构造器和说明 |
|---|
AliyunLogUtil(String endpoint,
String accessKeyId,
String accessKeySecret,
String project)
创建阿里云日志服务工具类
阿里云日志服务控制台: https://sls.console.aliyun.com |
| 限定符和类型 | 方法和说明 |
|---|---|
com.aliyun.openservices.log.response.PutLogsResponse |
cacheCommit(String logstore)
手动将
#cacheLog(LogItem) 缓存中的数据提交到阿里云日志服务中去。 |
void |
cacheLog(String logstore,
com.aliyun.openservices.log.common.LogItem logItem)
缓存日志。
|
ArrayList<String> |
getLogStore()
列出当前日志服务下的所有日志库名称
|
static void |
main(String[] args) |
com.aliyun.openservices.log.common.LogItem |
newLogItem()
创建一个新的
LogItem 不过相比于原本的,这里不用传入当前时间了,自动赋予当前时间戳 |
long |
queryCount(String logstore,
String query,
String topic,
int startTime,
int endTime)
统计符合条件的日志的记录条数
只有阿里云日志控制台打开索引功能,才能使用此接口 最新数据有1分钟延迟时间 |
ArrayList<com.aliyun.openservices.log.common.QueriedLog> |
queryList(String logstore,
String query,
String topic,
int startTime,
int endTime,
int offset,
int line,
boolean reverse)
统计符合条件的日志的记录条数
只有阿里云日志控制台打开索引功能,才能使用此接口 最新数据有1分钟延迟时间 使用示例: ArrayList |
com.aliyun.openservices.log.response.PutLogsResponse |
save(String logstore,
String topic,
String source,
com.aliyun.openservices.log.common.LogItem logItem)
保存单条日志。
|
com.aliyun.openservices.log.response.PutLogsResponse |
saveByGroup(String logstore,
String topic,
String source,
Vector<com.aliyun.openservices.log.common.LogItem> logGroup)
保存多条日志(日志组)。
|
void |
setCacheAutoSubmit(int maxNumber,
int maxTime)
设置日志缓存自动提交服务器的临界点,可以通过此来设置。
|
void |
setCacheLogMaxNumber(int cacheLogMaxNumber)
已过时。
|
void |
setStackTraceDeep(int deep)
Thread.currentThread().getStackTrace()[3] 追溯调用此方法的函数,数字越大追溯位置越靠外
若不设置,默认为0,不启用程序具体执行类及函数的记录 此方法主要用于,当扩展此类,或继承等,日志中记录的执行类及执行方法,便是依据此,来自动获得并记入日志的 |
public String project
public Vector<com.aliyun.openservices.log.common.LogItem> logGroupCache
#logGroup内的日志条数累计到这里指定的条数时,才回提交到阿里云日志服务中去public int cacheLogMaxNumber
public int cacheLogMaxTime
public int stack_trace_deep
public int lastSubmitTime
public com.aliyun.openservices.log.Client client
public AliyunLogUtil(String endpoint, String accessKeyId, String accessKeySecret, String project)
endpoint - 如 cn-hongkong.log.aliyuncs.comaccessKeyId - 阿里云访问密钥 AccessKeyIdaccessKeySecret - 阿里云 AccessKeySecretproject - 日志服务中,创建的项目名称public void setCacheLogMaxNumber(int cacheLogMaxNumber)
setCacheAutoSubmit(int, int)
#save(String, String, LogItem) 使用,当调用save方法保存的缓存池中的日志数量达到多少条时触发,提交缓存池中的日志到阿里云日志服务中。
cacheLogMaxNumber - 要缓存的日志条数public void setCacheAutoSubmit(int maxNumber,
int maxTime)
maxNumber - (单位:条)当日志缓存条数达到多少条时,自动提交日志,并清空日志缓存重新记录。
maxTime - (单位:秒)当日志缓存时间达到多少秒没有提交时,超过指定秒数后,再此写入日志时,会触发,使其自动提交日志,并清空日志缓存重新记录public void setStackTraceDeep(int deep)
deep - 追溯级别,数字越大追溯位置越靠外,可以从1开始挨个变大,设置几个数字挨个试试。public ArrayList<String> getLogStore() throws com.aliyun.openservices.log.exception.LogException
com.aliyun.openservices.log.exception.LogExceptionpublic com.aliyun.openservices.log.response.PutLogsResponse save(String logstore, String topic, String source, com.aliyun.openservices.log.common.LogItem logItem) throws com.aliyun.openservices.log.exception.LogException
#saveByGroup(String, String, Vector) 累计多条日志时一并推送
//创建 AliyunLogUtil 对象
AliyunLogUtil aliyunLogUtil = new AliyunLogUtil(......);
//创建单条日志
LogItem logItem = aliyunLogUtil.newLogItem();
logItem.PushBack("name", "试试");
logItem.PushBack("url", "www.xnx3.com");
logItem.PushBack("date", "2017.5.2");
//刚创建的单条日志到阿里云日志服务中去
aliyunLogUtil.save("topic1", "127.0.0.1", logItem);
topic - 用户自定义字段,用以标记一批日志(例如:访问日志根据不同的站点进行标记)。默认该字段为空字符串(空字符串也是一个有效的主题)。任意不超过 128 字节的字符串。source - 日志的来源地,例如产生该日志机器的 IP 地址。默认该字段为空。任意不超过 128 字节的字符串。logItem - 要保存的日志,可用 newLogItem() 获取创建 LogItem 对象,然后将要记录的日志类似JSON, LogItem.PushBack(String, String) 加入PutLogsResponsecom.aliyun.openservices.log.exception.LogExceptionpublic void cacheLog(String logstore, com.aliyun.openservices.log.common.LogItem logItem) throws com.aliyun.openservices.log.exception.LogException
setCacheLogMaxNumber(int) 达到这里设置的条数后才会触发 #cacheCommit() 提交到阿里云日志服务
logItem - 要缓存的日志,可用 newLogItem() 获取创建 LogItem 对象,然后将要记录的日志类似JSON, LogItem.PushBack(String, String) 加入com.aliyun.openservices.log.exception.LogExceptionpublic com.aliyun.openservices.log.response.PutLogsResponse cacheCommit(String logstore) throws com.aliyun.openservices.log.exception.LogException
#cacheLog(LogItem) 缓存中的数据提交到阿里云日志服务中去。若提交成功,便清空缓存。
#cacheLog(LogItem) 向缓存中添加日志时,当达到 setCacheLogMaxNumber(int) 设置的缓存最大条数后会自动触发。
PutLogsResponse 提交返回的结果com.aliyun.openservices.log.exception.LogExceptionpublic com.aliyun.openservices.log.response.PutLogsResponse saveByGroup(String logstore, String topic, String source, Vector<com.aliyun.openservices.log.common.LogItem> logGroup) throws com.aliyun.openservices.log.exception.LogException
//创建 AliyunLogUtil 对象
AliyunLogUtil aliyunLogUtil = new AliyunLogUtil(......);
//创建日志组
Vector logGroup = new Vector();
int i = 0;
while (++i < 100) {
//循环向日志组内加入日志
LogItem logItem = aliyunLogUtil.newLogItem();
logItem.PushBack("date", "2017.5.2");
logItem.PushBack("number", "当前次数:"+i);
logGroup.add(logItem);
}
//保存整个日志组的日志到阿里云日志服务中去
aliyunLogUtil.saveByGroup("topic2", "127.0.0.1", logGroup);
topic - 用户自定义字段,用以标记一批日志(例如:访问日志根据不同的站点进行标记)。默认该字段为空字符串(空字符串也是一个有效的主题)。任意不超过 128 字节的字符串。source - 日志的来源地,例如产生该日志机器的 IP 地址。默认该字段为空。任意不超过 128 字节的字符串。logGroup - 日志组,限制为:最大 4096 行日志,或 10MB 空间。PutLogsResponsecom.aliyun.openservices.log.exception.LogExceptionpublic com.aliyun.openservices.log.common.LogItem newLogItem()
LogItem 不过相比于原本的,这里不用传入当前时间了,自动赋予当前时间戳LogItempublic long queryCount(String logstore, String query, String topic, int startTime, int endTime) throws com.aliyun.openservices.log.exception.LogException
query - 查询表达式。为空字符串""则查询所有。关于查询表达式的详细语法,请参考 查询语法 https://help.aliyun.com/document_detail/29060.htmltopic - 查询日志主题。为空字符串""则查询所有。startTime - 查询开始时间点(精度为秒,从 1970-1-1 00:00:00 UTC 计算起的秒数)。10位时间戳,可用 DateUtil.timeForUnix10() 取得endTime - 查询结束时间点,10位时间戳,可用 DateUtil.timeForUnix10() 取得com.aliyun.openservices.log.exception.LogExceptionpublic ArrayList<com.aliyun.openservices.log.common.QueriedLog> queryList(String logstore, String query, String topic, int startTime, int endTime, int offset, int line, boolean reverse) throws com.aliyun.openservices.log.exception.LogException
ArrayList qlList = aliyunLogUtil.queryList("", "", DateUtil.timeForUnix10()-10000, DateUtil.timeForUnix10(), 0, 100, true);
for (int i = 0; i < qlList.size(); i++) {
QueriedLog ll = qlList.get(i);
LogItem li = ll.GetLogItem();
JSONObject json = JSONObject.fromObject(li.ToJsonString());
System.out.println(DateUtil.dateFormat(json.getLong("logtime"), com.xnx3.DateUtil.FORMAT_DEFAULT)+"__"+li.ToJsonString());
}
query - 查询表达式。为空字符串""则查询所有。关于查询表达式的详细语法,请参考 查询语法 https://help.aliyun.com/document_detail/29060.htmltopic - 查询日志主题。为空字符串""则查询所有。startTime - 查询开始时间点(精度为秒,从 1970-1-1 00:00:00 UTC 计算起的秒数)。10位时间戳,可用 DateUtil.timeForUnix10() 取得endTime - 查询结束时间点,10位时间戳,可用 DateUtil.timeForUnix10() 取得offset - 请求返回日志的起始点。取值范围为 0 或正整数,默认值为 0。line - 请求返回的最大日志条数。取值范围为 0~100,默认值为 100。reverse - 是否按日志时间戳逆序返回日志。
QueriedLog数组,将每条日志内容都详细列出来。若返回null,则是读取失败com.aliyun.openservices.log.exception.LogExceptionpublic static void main(String[] args) throws com.aliyun.openservices.log.exception.LogException, InterruptedException, com.xnx3.exception.NotReturnValueException
com.aliyun.openservices.log.exception.LogExceptionInterruptedExceptioncom.xnx3.exception.NotReturnValueExceptionCopyright © 2023. All rights reserved.