本文介紹如何快速使用日志服務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日志。
文檔內容是否對您有幫助?