Exposes the loggerAdapter as log to Cloud Functions and Triggers (#1565)
This allows access to logging inside cloud code and triggers via
request.log.info
request.log.error
This commit is contained in:
committed by
Florent Vilmart
parent
2d94a885d2
commit
6e9529f81c
61
spec/CloudCodeLogger.spec.js
Normal file
61
spec/CloudCodeLogger.spec.js
Normal file
@@ -0,0 +1,61 @@
|
||||
'use strict';
|
||||
var LoggerController = require('../src/Controllers/LoggerController').LoggerController;
|
||||
var FileLoggerAdapter = require('../src/Adapters/Logger/FileLoggerAdapter').FileLoggerAdapter;
|
||||
|
||||
describe("Cloud Code Logger", () => {
|
||||
|
||||
it("should expose log to functions", (done) => {
|
||||
var logController = new LoggerController(new FileLoggerAdapter());
|
||||
|
||||
Parse.Cloud.define("loggerTest", (req, res) => {
|
||||
req.log.info('logTest', 'info log', {info: 'some log' });
|
||||
req.log.error('logTest','error log', {error: 'there was an error'});
|
||||
res.success({});
|
||||
});
|
||||
|
||||
Parse.Cloud.run('loggerTest').then(() => {
|
||||
Parse.Cloud._removeHook('Functions', 'logTest');
|
||||
return logController.getLogs({from: Date.now() - 500, size: 1000});
|
||||
}).then((res) => {
|
||||
expect(res.length).not.toBe(0);
|
||||
let lastLogs = res.slice(0, 2);
|
||||
let errorMessage = lastLogs[0];
|
||||
let infoMessage = lastLogs[1];
|
||||
expect(errorMessage.level).toBe('error');
|
||||
expect(errorMessage.error).toBe('there was an error');
|
||||
expect(errorMessage.message).toBe('logTest error log');
|
||||
expect(infoMessage.level).toBe('info');
|
||||
expect(infoMessage.info).toBe('some log');
|
||||
expect(infoMessage.message).toBe('logTest info log');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it("should expose log to trigger", (done) => {
|
||||
var logController = new LoggerController(new FileLoggerAdapter());
|
||||
|
||||
Parse.Cloud.beforeSave("MyObject", (req, res) => {
|
||||
req.log.info('beforeSave MyObject', 'info log', {info: 'some log' });
|
||||
req.log.error('beforeSave MyObject','error log', {error: 'there was an error'});
|
||||
res.success({});
|
||||
});
|
||||
|
||||
let obj = new Parse.Object('MyObject');
|
||||
obj.save().then(() => {
|
||||
Parse.Cloud._removeHook('Triggers', 'beforeSave', 'MyObject');
|
||||
return logController.getLogs({from: Date.now() - 500, size: 1000})
|
||||
}).then((res) => {
|
||||
expect(res.length).not.toBe(0);
|
||||
let lastLogs = res.slice(0, 2);
|
||||
let errorMessage = lastLogs[0];
|
||||
let infoMessage = lastLogs[1];
|
||||
expect(errorMessage.level).toBe('error');
|
||||
expect(errorMessage.error).toBe('there was an error');
|
||||
expect(errorMessage.message).toBe('beforeSave MyObject error log');
|
||||
expect(infoMessage.level).toBe('info');
|
||||
expect(infoMessage.info).toBe('some log');
|
||||
expect(infoMessage.message).toBe('beforeSave MyObject info log');
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -7,7 +7,8 @@ describe('info logs', () => {
|
||||
var fileLoggerAdapter = new FileLoggerAdapter();
|
||||
fileLoggerAdapter.info('testing info logs', () => {
|
||||
fileLoggerAdapter.query({
|
||||
size: 1,
|
||||
from: new Date(Date.now() - 500),
|
||||
size: 100,
|
||||
level: 'info'
|
||||
}, (results) => {
|
||||
if(results.length == 0) {
|
||||
@@ -28,7 +29,8 @@ describe('error logs', () => {
|
||||
var fileLoggerAdapter = new FileLoggerAdapter();
|
||||
fileLoggerAdapter.error('testing error logs', () => {
|
||||
fileLoggerAdapter.query({
|
||||
size: 1,
|
||||
from: new Date(Date.now() - 500),
|
||||
size: 100,
|
||||
level: 'error'
|
||||
}, (results) => {
|
||||
if(results.length == 0) {
|
||||
|
||||
Reference in New Issue
Block a user