Skip to content
This repository has been archived by the owner on Apr 13, 2023. It is now read-only.

Commit

Permalink
feat!: Add logger builder (#65)
Browse files Browse the repository at this point in the history
* BREAKING CHANGE: Remove logging interface export 
* feat: add logger builder to be used by other FHIR components
  • Loading branch information
Bingjiling authored May 11, 2021
1 parent 58f099f commit aa99182
Show file tree
Hide file tree
Showing 6 changed files with 293 additions and 61 deletions.
96 changes: 48 additions & 48 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,51 +64,51 @@ All notable changes to this project will be documented in this file. See [standa

* add getCapabilities method to Search interface ([#42](https://github.com/awslabs/fhir-works-on-aws-interface/issues/42)) ([b274566](https://github.com/awslabs/fhir-works-on-aws-interface/commit/b274566c71899a2bd7c7d9112bfd85c889678ad4))

## [6.0.1] - 2021-01-06

### Updated
* `GetSearchFilterBasedOnIdentityRequest.operation` now includes `history-instance`

## [6.0.0] - 2020-12-21

### Added
- `SearchFilter` interface to allow `fhir-works-on-aws-search` to filter search results
- `GetSearchFilterBasedOnIdentity` interface so `fhir-works-on-aws-authz` can provide `SearchFilter` that can be used for filtering search results
- `InvalidSearchParameterError`: A new error for search to throw when search parameters are invalid

## [5.0.0] - 2020-12-11

### Added
- `ProductInfo` interface to collect product and business information about the FHIR server

## [4.0.0] - 2020-11-20

### Added
- `SmartStrategy` for passing in SMART Auth configurations
- `SmartAuthorization` for class implementing SMART Auth

### Updated
- Authorization interfaces to use `userIdentity` instead of `accessToken`
- isAuthorized renamed to verifyAccessToken
- getRequesterUserId method removed

## [3.0.0] - 2020-11-11

### Added
- Required methods for SMART on FHIR interactions
- Export UnauthorizedError to be usable
- Required interfaces and types for bulk data export

## [2.0.0] - 2020-09-25

### Added
- `getAllowedResourceTypesForOperation` method to `Authorization` interface.

### Updated
- `Authorization.isAuthorized` to return a promise.

## [1.0.0] - 2020-08-31

### Added

- Initial launch! :rocket:
## [6.0.1] - 2021-01-06

### Updated
* `GetSearchFilterBasedOnIdentityRequest.operation` now includes `history-instance`

## [6.0.0] - 2020-12-21

### Added
- `SearchFilter` interface to allow `fhir-works-on-aws-search` to filter search results
- `GetSearchFilterBasedOnIdentity` interface so `fhir-works-on-aws-authz` can provide `SearchFilter` that can be used for filtering search results
- `InvalidSearchParameterError`: A new error for search to throw when search parameters are invalid

## [5.0.0] - 2020-12-11

### Added
- `ProductInfo` interface to collect product and business information about the FHIR server

## [4.0.0] - 2020-11-20

### Added
- `SmartStrategy` for passing in SMART Auth configurations
- `SmartAuthorization` for class implementing SMART Auth

### Updated
- Authorization interfaces to use `userIdentity` instead of `accessToken`
- isAuthorized renamed to verifyAccessToken
- getRequesterUserId method removed

## [3.0.0] - 2020-11-11

### Added
- Required methods for SMART on FHIR interactions
- Export UnauthorizedError to be usable
- Required interfaces and types for bulk data export

## [2.0.0] - 2020-09-25

### Added
- `getAllowedResourceTypesForOperation` method to `Authorization` interface.

### Updated
- `Authorization.isAuthorized` to return a promise.

## [1.0.0] - 2020-08-31

### Added

- Initial launch! :rocket:
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@
"local": "node .",
"prepublish": "tsc"
},
"dependencies": {},
"dependencies": {
"winston": "^3.3.3",
"winston-transport": "^4.4.0"
},
"devDependencies": {
"@types/jest": "^26.0.19",
"@types/node": "^12",
Expand Down
5 changes: 0 additions & 5 deletions src/fhirConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,6 @@ export interface Server {
url: string;
}

export interface Logging {
level: 'debug' | 'info' | 'warn' | 'error';
}

export interface Resource {
operations: TypeOperation[];
fhirVersions: FhirVersion[];
Expand Down Expand Up @@ -160,7 +156,6 @@ export interface FhirConfig {
productInfo: ProductInfo;
auth: Auth;
server: Server;
logging: Logging;
profile: Profile;
validators: Validator[];
}
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,5 @@ export * from './errors/UnauthorizedError';
export * from './errors/TooManyConcurrentExportRequestsError';
export * from './errors/InvalidSearchParameterError';
export * from './validator';
export { makeLogger } from './loggerBuilder';
export { stubs } from './stubs';
46 changes: 46 additions & 0 deletions src/loggerBuilder.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { createLogger, Logger } from 'winston';
import Transport from 'winston-transport';

class SimpleConsole extends Transport {
log(info: any, callback: () => void) {
setImmediate(() => this.emit('logged', info));
const msg = [info.meta, info.message];
if (info[Symbol.for('splat')]) {
msg.push(...info[Symbol.for('splat')]);
}

// Use console here so request ID and log level can be automatically attached in CloudWatch log
/* eslint-disable no-console */
switch (info[Symbol.for('level')]) {
case 'debug':
console.debug(...msg);
break;
case 'info':
console.info(...msg);
break;
case 'warn':
console.warn(...msg);
break;
case 'error':
console.error(...msg);
break;
default:
console.log(...msg);
break;
}
/* eslint-enable no-console */

if (callback) {
callback();
}
}
}

// eslint-disable-next-line import/prefer-default-export
export function makeLogger(metadata?: any, logLevel: string | undefined = process.env.LOG_LEVEL): Logger {
return createLogger({
level: logLevel,
transports: [new SimpleConsole()],
defaultMeta: { meta: metadata },
});
}
Loading

0 comments on commit aa99182

Please sign in to comment.