diff --git a/logging/list.js b/logging/list.js new file mode 100644 index 00000000000..d42d127d55c --- /dev/null +++ b/logging/list.js @@ -0,0 +1,48 @@ +// Copyright 2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +// [START list] +// [START auth] +var projectId = process.env.TEST_PROJECT_ID; +var keyFilename = process.env.GOOGLE_APPLICATION_CREDENTIALS; + +projectId = projectId || ''; +keyFilename = keyFilename || '/path/to/keyfile.json'; + +// [START require] +var gcloud = require('gcloud')({ + projectId: projectId, + keyFilename: keyFilename +}); +// [END require] +// [END auth] + +var logging = gcloud.logging(); + +function list(callback) { + // Retrieve 3 log entries. + logging.getEntries({ + pageSize: 3 + }, callback); +} +// [END list] + +exports.list = list; + +if (module === require.main) { + list(function (err, result) { + console.log(err, result); + }); +} diff --git a/logging/package.json b/logging/package.json new file mode 100644 index 00000000000..bcab4202be0 --- /dev/null +++ b/logging/package.json @@ -0,0 +1,14 @@ +{ + "name": "nodejs-docs-samples-logging", + "description": "Node.js samples for Google Cloud Logging.", + "version": "0.0.1", + "private": true, + "license": "Apache Version 2.0", + "scripts": { + "list": "node list.js", + "write": "node write.js" + }, + "dependencies": { + "gcloud": "^0.27.0" + } +} diff --git a/logging/write.js b/logging/write.js new file mode 100644 index 00000000000..b64f7c5417b --- /dev/null +++ b/logging/write.js @@ -0,0 +1,86 @@ +// Copyright 2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/* jshint camelcase:false */ +'use strict'; + +// [START write] +// [START setup] +var projectId = process.env.TEST_PROJECT_ID; +var keyFilename = process.env.GOOGLE_APPLICATION_CREDENTIALS; + +projectId = projectId || ''; +keyFilename = keyFilename || '/path/to/keyfile.json'; + +var gcloud = require('gcloud')({ + projectId: projectId, + keyFilename: keyFilename +}); + +var logging = gcloud.logging(); +// [END setup] + +function write(callback) { + var log = logging.log('myLog'); + + // Modify this resource type to match a resource in your project + // See https://cloud.google.com/logging/docs/api/ref_v2beta1/rest \ + // /v2beta1/monitoredResourceDescriptors/list + var resource = { + type: 'gae_app', + labels: { + module_id: 'default', + version_id: 'express' + } + }; + + var entry = log.entry(resource, { + foo: 'bar' + }); + + var secondEntry = log.entry(resource, { + beep: 'boop' + }); + + // You can log multiple entries one at a a time, but it is best to write + // multiple entires together in a batch. + log.write([ + entry, + secondEntry + ], callback); +} +// [END write] + +// [START deleteLog] +function deleteLog(callback) { + var log = logging.log('myLog'); + + // Delete the logs + log.delete(callback); +} +// [END deleteLog] + +exports.write = write; +exports.deleteLog = deleteLog; + +if (module === require.main) { + write(function (err, apiResponse) { + console.log(err, apiResponse); + if (err) { + return; + } + deleteLog(function (err, apiResponse) { + console.log(err, apiResponse); + }); + }); +} diff --git a/package.json b/package.json index ca00cba30bc..ecc9907180d 100644 --- a/package.json +++ b/package.json @@ -26,11 +26,12 @@ "coveralls": "cat ./coverage/lcov.info | node_modules/.bin/coveralls", "deps_datastore": "cd datastore && npm i && cd ../..", "deps_storage": "cd storage && npm i && cd ../..", + "deps_logging": "cd logging && npm i && cd ../..", "deps_express": "cd appengine/express && npm i && cd ../..", "deps_sendgrid": "cd appengine/sendgrid && npm i && cd ../.. && cd computeengine/sendgrid && npm i && cd ../..", "deps_memcached": "cd appengine/express-memcached-session && npm i && cd ../..", "pretest_geddy": "cd appengine/geddy && npm i geddy; GEDDY_SECRET=config/secrets.json; [[ -f $GEDDY_SECRET ]] || echo '{}' > $GEDDY_SECRET && node node_modules/.bin/geddy gen secret; cd ../..;", - "pretest": "npm run deps_datastore && npm run deps_storage && npm run deps_memcached && npm run deps_express && npm run deps_sendgrid && npm run pretest_geddy", + "pretest": "npm run deps_datastore && npm run deps_storage && npm run deps_logging && npm run deps_memcached && npm run deps_express && npm run deps_sendgrid && npm run pretest_geddy", "test": "npm run jshint && npm run cover" }, "devDependencies": { diff --git a/test/logging/list.test.js b/test/logging/list.test.js new file mode 100644 index 00000000000..737a3ac9289 --- /dev/null +++ b/test/logging/list.test.js @@ -0,0 +1,31 @@ +// Copyright 2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var assert = require('assert'); + +var logging = require('../../logging/list'); + +describe('logging/list', function () { + it('should list entries', function (done) { + logging.list(function (err, entries) { + if (err) { + return done(err); + } + assert.ok(Array.isArray(entries), 'should have got an array'); + assert.equal(entries.length, 3, 'should have three entries'); + done(); + }); + }); +}); diff --git a/test/logging/write.test.js b/test/logging/write.test.js new file mode 100644 index 00000000000..f2bf6284657 --- /dev/null +++ b/test/logging/write.test.js @@ -0,0 +1,39 @@ +// Copyright 2016, Google, Inc. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +'use strict'; + +var assert = require('assert'); + +var logging = require('../../logging/write'); + +describe('logging/write', function () { + it('should write entries', function (done) { + logging.write(function (err, apiResponse) { + if (err) { + return done(err); + } + assert.deepEqual(apiResponse, {}, 'should have correct response'); + done(); + }); + }); + it('should delete entries', function (done) { + logging.deleteLog(function (err, apiResponse) { + if (err) { + return done(err); + } + assert.deepEqual(apiResponse, {}, 'should have correct response'); + done(); + }); + }); +});