本文介绍如何快速使用日志服务Node.js SDK完成常见操作,包括创建项目(Project)、创建日志库(Logstore)、写入日志和查询日志等。
前提条件
已创建RAM用户并完成授权。具体操作,请参见创建RAM用户并完成授权。
已配置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具体操作,请参见在Linux、macOS和Windows系统配置环境变量。
重要阿里云账号的AccessKey拥有所有API的访问权限,建议您使用RAM用户的AccessKey进行API访问或日常运维。
强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
已完成Node.js SDK安装。更多信息,请参见安装Node.js SDK。
示例
直接编写Node.js代码采集日志
本示例中,创建一个SLSQuickStart.js文件,并调用接口分别完成创建Project、创建Logstore、创建索引、写入日志数据和查询日志数据。以下为示例代码:
const ALY = require('aliyun-sdk') var sls = new ALY.SLS({ // 本示例从环境变量中获取AccessKey ID和AccessKey Secret。 "accessKeyId": process.env.ALIBABA_CLOUD_ACCESS_KEY_ID, "secretAccessKey": process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET, //日志服务的域名。此处以杭州为例,其它地域请根据实际情况填写。 endpoint: 'http://cn-hangzhou.log.aliyuncs.com', //SDK版本号,固定值。 apiVersion: '2015-06-01' }) // 必选,Project名称。 const projectName = "you_project_name" // 必选,Logstore名称。 const logstoreName= "your_logstore_name" // 创建Project。 function createProject () { const param = { projectDetail: { projectName, description: "description about project" } } sls.createProject(param, function(err, data) { if (err) { console.error('error:', err) } else { console.log('创建project', data) } }) } // 创建Logstore。 function createLogStore() { const param = { projectName, logstoreDetail: { logstoreName: logstoreName, // 必选,设置数据保存时长,单位为天。如果ttl配置为3650,表示永久保存。 ttl: 3, // 必选,设置Shard数量。 shardCount: 2 } } sls.createLogstore(param, function (err, data) { if (err) { console.log(err) } else { console.log('创建LogStore', data) } }) } // 创建LogStore索引。 function createIndex () { const param = { projectName, logstoreName, indexDetail: { line: { token: [";"], include_keys: ["key2", "key3"], caseSensitive:false } } } sls.createIndex(param, function(err, data) { if (err) { console.log(err) } else { console.log('为logStore创建索引成功', data) } }) } // 写入日志。 function writeLog () { const param = { projectName, logStoreName: logstoreName, logGroup: { // 必选,写入的日志数据。 logs: [ { time: Math.floor(new Date().getTime() / 1000), contents: [ { key: 'a', value: '1' }, { key: 'a', value: '2' }, { key: 'a', value: '3' } ] } ], topic: 'vv', source: '127.0.0.1' } } sls.putLogs(param, function (err, data) { if (err) { console.error('error:', err) } else { console.log('写入日志成功', data) } }) } // 查询日志。 function queryLog () { // 查询最近一个小时的日志 const to = Math.floor(new Date().getTime() / 1000) const from = to - 3600 const param = { // 必选,Project名称。 projectName, // 必选,Logstore名称。 logStoreName: logstoreName, // 必选,开始时间,精度为秒。 from, // 必选,结束时间,精度为秒。 to, // 可选,指定日志主题。 topic: "", // 可选,查询的关键词,不输入则查询全部日志数据。 query: "" } sls.getLogs(param, function (err, data) { if(err) { console.error('error:', err) } else{ console.log('查询近一个小时的日志', data) } }) } // 运行function。 createProject() setTimeout(() => { createLogStore() }, 10 * 1000) setTimeout(() => { createIndex() }, 20 * 1000) setTimeout(() => { writeLog() }, 80 * 1000) setTimeout(() => { queryLog() }, 90 * 1000)
返回结果示例如下:
创建project {request_id: '6125F2E882518E4618E7C316', headers: {…}, body: {…}} 创建LogStore {request_id: '6125F2F295D4E2210BE5BD59', headers: {…}, body: {…}} 为logStore创建索引成功 {request_id: '6125F2FCE681A8360B6B3365', headers: {…}, body: {…}} 写入日志成功 {request_id: '6125F3380EBCCCA1834DBD83', headers: {…}, body: {…}} 查询近一个小时的日志 {request_id: '6125F34214C3A33B68052D5C', headers: {…}, body: {…}}
更多示例代码,请参见Aliyun Log Node.js SDK。
通过Logtail采集Node.js日志
通过Logtail方式,以采集Node.js的log4js日志为例,采集Node.js日志。更多信息,请参见采集Node.js日志。
文档内容是否对您有帮助?