Skip to content

Commit

Permalink
Add Logging examples.
Browse files Browse the repository at this point in the history
  • Loading branch information
jmdobry committed Jan 15, 2016
1 parent 2ebd0b4 commit c5963c9
Show file tree
Hide file tree
Showing 10 changed files with 372 additions and 13 deletions.
25 changes: 25 additions & 0 deletions logging/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## Logging Samples

These samples require two environment variables to be set:

- `GOOGLE_APPLICATION_CREDENTIALS` - Path to a service account file. You can
download one from your Google project's "permissions" page.
- `TEST_PROJECT_ID` - Id of your Google project.

## Run a sample

Install dependencies:

npm install

To print available commands:

npm run

Execute a sample:

npm run <sample>

Example:

npm run write
92 changes: 92 additions & 0 deletions logging/export.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
// 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 setup]
var projectId = process.env.TEST_PROJECT_ID;
var keyFilename = process.env.GOOGLE_APPLICATION_CREDENTIALS;

projectId = projectId || '<your-project-id>';
keyFilename = keyFilename || '/path/to/keyfile.json';

var gcloud = require('gcloud')({
projectId: projectId,
keyFilename: keyFilename
});

var logging = gcloud.logging();
// [END setup]

// [START listSinks]
function listSinks(callback) {
// list all sinks in the project
logging.getSinks(callback);
}
// [END listSinks]

// [START createSink]
function createSink(callback) {
var gcs = gcloud.storage();

// create a new sink
//
// This method only works if you are authenticated as yourself, e.g. using the
// gcloud SDK.
logging.createSink('mySink', {
destination: gcs.bucket('logging-bucket')
}, callback);
}
// [END createSink]

// [START updateSink]
function updateSink(callback) {
var gcs = gcloud.storage();
var sink = logging.sink('mySink');

// update a sink
//
// This method only works if you are authenticated as yourself, e.g. using the
// gcloud SDK.
sink.setMetadata({
// change destination to something else
destination: gcs.bucket('other-logging-bucket')
}, callback);
}
// [END updateSink]

// [START deleteSink]
function deleteSink(callback) {
var sink = logging.sink('mySink');

// delete a sink
//
// This method only works if you are authenticated as yourself, e.g. using the
// gcloud SDK.
sink.delete(callback);
}
// [END deleteSink]

exports.listSinks = listSinks;
exports.createSink = createSink;
exports.updateSink = updateSink;
exports.deleteSink = deleteSink;

if (module === require.main) {
listSinks(function (err, sinks, apiResponse) {
console.log(err, 'sinks:', sinks, 'apiResponse:', apiResponse);
if (err) {
return;
}
});
}
48 changes: 48 additions & 0 deletions logging/list.js
Original file line number Diff line number Diff line change
@@ -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 || '<your-project-id>';
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, apiResponse) {
console.log(err, 'apiResponse:', apiResponse);
});
}
15 changes: 15 additions & 0 deletions logging/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"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",
"export": "node export.js"
},
"dependencies": {
"gcloud": "^0.27.0"
}
}
86 changes: 86 additions & 0 deletions logging/write.js
Original file line number Diff line number Diff line change
@@ -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 || '<your-project-id>';
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:', apiResponse);
if (err) {
return;
}
deleteLog(function (err, apiResponse) {
console.log(err, 'apiResponse:', apiResponse);
});
});
}
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,12 @@
"deps_datastore": "cd datastore && npm i && cd ../..",
"deps_storage": "cd storage && npm i && cd ../..",
"deps_prediction": "cd prediction && 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_prediction && 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_prediction && 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": {
Expand Down
16 changes: 4 additions & 12 deletions storage/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,16 @@

Install dependencies:

```
$ npm install
```
npm install

To print available commands:

```
$ npm run
```
npm run

Execute a sample:

```
$ npm run <sample> -- [arg_1] [arg_2] [arg_n]
```
npm run <sample> -- [arg_1] [arg_2] [arg_n]

Example:

```
$ npm run authSample -- my-cool-project
```
npm run authSample -- my-cool-project
30 changes: 30 additions & 0 deletions test/logging/export.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// 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/export');

describe('logging/export', function () {
it('should list sinks', function (done) {
logging.listSinks(function (err, sinks) {
if (err) {
return done(err);
}
assert.ok(Array.isArray(sinks), 'should be an array');
done();
});
});
});
31 changes: 31 additions & 0 deletions test/logging/list.test.js
Original file line number Diff line number Diff line change
@@ -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();
});
});
});
Loading

0 comments on commit c5963c9

Please sign in to comment.