本文介绍如何快速使用日志服务Node.js SDK完成常见操作,包括创建项目(Project)、创建日志库(Logstore)、写入日志和查询日志等。
前提条件
- 已开通日志服务。更多信息,请参见开通日志服务。 
- 已安装日志服务Node.js SDK。具体操作,请参见安装Node.js SDK。 
注意事项
本示例以华东1(杭州)的公网Endpoint为例,其公网Endpoint为https://cn-hangzhou.log.aliyuncs.com。如果您通过与Project同地域的其他阿里云产品访问日志服务,请使用内网Endpointhttps://cn-hangzhou-intranet.log.aliyuncs.com。关于日志服务支持的地域与Endpoint的对应关系,请参见服务入口。
参数说明
createProject
createLogStore
createIndex
getLogs
示例
编写Node.js代码采集日志
本示例中,创建一个SLSQuickStart.js文件,并调用接口分别完成创建Project、创建Logstore、创建索引、写入日志数据和查询日志数据。以下为示例代码:
const Client = require('@alicloud/log')
const sls = new Client({
    // 本示例从环境变量中获取AccessKey ID和AccessKey Secret。
    accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
    accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
    //日志服务的域名。此处以杭州为例,其它地域请根据实际情况填写。 
    endpoint: 'cn-hangzhou.log.aliyuncs.com'
})
// 必选,Project名称。
const projectName = "aliyun-test-node-project"
// 必选,Logstore名称。
const logstoreName = "request_log"
async function test() {
    // 创建Project
    await sls.createProject(projectName, {
        description: 'test'
    })
    // 创建Logstore
    await sls.createLogStore(projectName, logstoreName, {
        // 必选,设置数据保存时长,单位为天。如果ttl配置为3650,表示永久保存。
        ttl: 3600,
        // 必选,设置Shard数量。
        shardCount: 2
    })
    // 创建index
    const index = {
        "keys": {
            "request_method": {
                // 是否大小写敏感  false为大小写不敏感。
                "caseSensitive": false,
                // 是否对该字段开启统计分析
                "doc_value": true,
                "token": ["\n", "\t", ";", ",", "=", ":"],
                "type": "text"
            }, "status": {
                // 是否大小写敏感  false为大小写不敏感。
                "caseSensitive": false,
                // 是否对该字段开启统计分析
                "doc_value": true,
                "token": ["\n", "\t", ";", ",", "=", ":"],
                "type": "long"
            }
        },
    }
    await sls.createIndex(projectName, logstoreName, index)
    // 写入日志
    const logGroup = {
        logs: [
          { content: { request_method: 'GET', status: '200' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'GET', status: '500' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'GET', status: '200' }, timestamp: Math.floor(new Date().getTime() / 1000) },
          { content: { request_method: 'POST', status: '500'}, timestamp: Math.floor(new Date().getTime() / 1000) }
        ],
        tags: [{ tag1: 'testTag' }],
        topic: 'testTopic',
        source: 'testSource'
      };
      await sls.postLogStoreLogs(projectName, logstoreName, logGroup);
      // 查询日志示例1:查询最近1天的日志数据。
      const from = new Date();
      from.setDate(from.getDate() - 1);
      const to = new Date();
      const res = await sls.getLogs(projectName, logstoreName, from, to);
      
      // 查询日志示例2:通过query分析语句,统计最近10分钟的日志条数。
      // const from = new Date();
      // from.setSeconds(from.getSeconds() - 600)
      // const to = new Date();
      // query = '* | select count(*) as count';
      // topic = 'testTopic';
    
      // const res = await sls.getLogs(projectName,logstoreName,from,to,{
      //     query: query,
      //     topic: topic,
      //     line: 100,
      //     offset: 0,
      //     reverse: false,
      //     powersql: false
      // });
      
      console.log(res)
}
// 运行function。
test()
返回结果示例如下:
[
  {
    request_method: 'GET',
    status: '200',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'GET',
    status: '500',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'GET',
    status: '200',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  },
  {
    request_method: 'POST',
    status: '500',
    __topic__: 'testTopic',
    __source__: 'testSource',
    '__tag__:tag1': 'testTag',
    __time__: '1744882259'
  }
]更多示例代码如下表,方便您参考或直接使用。
| GitHub源码 | 说明 | 
| 创建Project、创建Logstore、创建索引、写入日志、查询日志、查询Logstore、获取日志分布情况等相关示例。 | 
通过Logtail采集Node.js日志
通过Logtail方式,以采集Node.js的log4js日志为例,请参见采集Node.js日志。
该文章对您有帮助吗?