Skip to content
This repository has been archived by the owner on Sep 6, 2022. It is now read-only.

Commit

Permalink
Add info logging for metrics (#21)
Browse files Browse the repository at this point in the history
* Add basic duration info logging to:
  - service
  - events
  - resource
* Change to `JSON.stringify` in error logging
* Bump prettier and tslint versions
  • Loading branch information
stoft authored Mar 3, 2020
1 parent 7d246dd commit 129b76c
Show file tree
Hide file tree
Showing 19 changed files with 180 additions and 22 deletions.
4 changes: 2 additions & 2 deletions dist/src/errors.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/src/errors.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion dist/src/events.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/src/events.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions dist/src/request.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,15 @@ export interface ReplyOptions {
contentType?: string;
headers?: Headers;
}
export declare const createDurationLogInfo: (request: Request, message: string, startTimestamp: number, endTimestamp: number) => {
message: string;
properties: {
type?: string | undefined;
replyTo?: string | undefined;
headers: {
[key: string]: unknown;
};
};
queue: string | undefined;
duration: number;
};
22 changes: 22 additions & 0 deletions dist/src/request.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/src/request.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion dist/src/resource.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/src/resource.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 6 additions & 1 deletion dist/src/service.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/src/service.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mq",
"version": "4.0.0",
"version": "4.1.0",
"description": "A declarative abstraction layer for writing event handlers.",
"main": "./dist/src/mq.js",
"types": "./dist/src/mq.d.ts",
Expand Down Expand Up @@ -49,11 +49,11 @@
"istanbul": "^0.4.5",
"mocha": "^6.2.0",
"nyc": "^14.1.1",
"prettier": "^1.18.2",
"prettier": "^1.19.1",
"sinon": "^7.3.2",
"source-map-support": "^0.5.12",
"ts-node": "^8.3.0",
"tslint": "^5.18.0",
"tslint": "^6.0.0",
"tslint-insurello": "github:insurello/tslint-insurello#v2.0.6",
"typescript": "^3.5.3",
"winston": "^3.1.0"
Expand Down
4 changes: 2 additions & 2 deletions src/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ export const errorHandler = (req: Request, logger: Logger) => (
logger.error(err.stack ? err.stack : err.message, requestInfo);
} else if (isError(err)) {
response(req)(err, { "x-error": err.error });
logger.warn(`${err}`, requestInfo);
logger.warn(JSON.stringify(err), requestInfo);
} else if (typeof err === "string") {
response(req)({ error: err }, { "x-error": err });
logger.warn(`${err}`, requestInfo);
logger.warn(JSON.stringify(err), requestInfo);
} else {
req.reject();
logger.verbose("rejected", requestInfo);
Expand Down
15 changes: 13 additions & 2 deletions src/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as t from "io-ts";
import { decode } from "./decoder";
import { errorHandler } from "./errors";
import { Logger, logger } from "./logger";
import { Request } from "./request";
import { createDurationLogInfo, Request } from "./request";

const defaultEventField = "event";

Expand Down Expand Up @@ -32,6 +32,7 @@ interface EventCallbackStyle<T, C, O> {
export const events = <T, C = any, O = T>(desc: Events<T, C, O>) => {
const _logger = desc.logger ? desc.logger : logger;
return (options: any) => (req: Request) => {
const durationStart = Date.now();
return Promise.resolve(desc.init(options))
.then(context =>
decode(desc.type, req.body).then(data =>
Expand All @@ -41,7 +42,17 @@ export const events = <T, C = any, O = T>(desc: Events<T, C, O>) => {
)
)
.then(() => req.ack())
.then(a => a, errorHandler(req, _logger));
.then(success => {
_logger.info(
createDurationLogInfo(
req,
"Event processed",
durationStart,
Date.now()
)
);
return success;
}, errorHandler(req, _logger));
};
};

Expand Down
Loading

0 comments on commit 129b76c

Please sign in to comment.