Skip to content

Commit acdd5c9

Browse files
authored
Merge pull request #186 from pharindoko/fix/185-pino-pretty
fix(logging): fix error when pino pretty is not found
2 parents 0384e83 + 165e84a commit acdd5c9

File tree

9 files changed

+79
-24
lines changed

9 files changed

+79
-24
lines changed

package-lock.json

Lines changed: 26 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
"@types/lodash": "4.14.149",
5959
"@types/lowdb": "1.0.9",
6060
"@types/node": "10.14.16",
61+
"@types/pino": "^5.14.0",
6162
"@types/supertest": "2.0.8",
6263
"@types/swagger-schema-official": "2.0.20",
6364
"@types/swagger-ui-express": "4.1.0",

serverless.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ custom:
2222
webpackConfig: 'webpack.config.prod.js' # Name of webpack configuration file
2323
includeModules:
2424
packagePath: './package.json'
25-
forceInclude:
26-
- pino-pretty
2725
packager: 'npm' # Packager that will be used to package your external modules
2826
excludeFiles: src/**/*.test.js # Provide a glob for files to ignore
2927
# The `provider` block defines where your service will be deployed

src/server/app/core.app.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export class CoreApp {
1212
storageAdapter: StorageAdapter;
1313
static storage = {} as lowdb.AdapterAsync;
1414
static adapter = {} as lowdb.LowdbAsync<{}>;
15-
logger = new Logger().logger;
15+
private prettyPrintLog = false;
1616
appConfig: AppConfig;
1717
protected server: express.Express;
1818
private apispec: ApiSpecification;
@@ -21,12 +21,15 @@ export class CoreApp {
2121
appConfig: AppConfig,
2222
server: express.Express,
2323
storageAdapter: StorageAdapter,
24-
apispec: ApiSpecification
24+
apispec: ApiSpecification,
25+
prettyPrintLog = false
2526
) {
2627
this.appConfig = appConfig;
2728
this.server = server;
2829
this.storageAdapter = storageAdapter;
2930
this.apispec = apispec;
31+
this.prettyPrintLog = prettyPrintLog;
32+
Logger.init(this.prettyPrintLog);
3033
}
3134

3235
async setup(): Promise<void> {

src/server/coreserver/server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import express from 'express';
22
import { Logger } from '../utils/logger';
3-
const logger = new Logger().logger;
3+
const logger = Logger.getInstance();
44
import { CoreApp } from '../app/core.app';
55
export abstract class CoreServer {
66
core: CoreApp;

src/server/factory.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ export class ServerFactory {
2626
Environment,
2727
new FileStorageAdapter(appConfig.jsonFile),
2828
appConfig,
29-
server
29+
server,
30+
true
3031
);
3132
break;
3233
}
@@ -37,7 +38,8 @@ export class ServerFactory {
3738
Environment,
3839
new FileStorageAdapter(appConfig.jsonFile),
3940
appConfig,
40-
server
41+
server,
42+
true
4143
);
4244
break;
4345
}
@@ -49,7 +51,8 @@ export class ServerFactory {
4951
DevEnvironment,
5052
new S3StorageAdapter(environment.s3Bucket, environment.s3File),
5153
appConfig,
52-
server
54+
server,
55+
true
5356
);
5457
break;
5558
}
@@ -61,7 +64,8 @@ export class ServerFactory {
6164
DevEnvironment,
6265
new S3StorageAdapter(environment.s3Bucket, environment.s3File),
6366
appConfig,
64-
server
67+
server,
68+
true
6569
);
6670
break;
6771
}
@@ -72,7 +76,8 @@ export class ServerFactory {
7276
Environment,
7377
new FileStorageAdapter(appConfig.jsonFile),
7478
appConfig,
75-
server
79+
server,
80+
true
7681
);
7782
break;
7883
}
@@ -84,7 +89,8 @@ export class ServerFactory {
8489
CloudEnvironment,
8590
new S3StorageAdapter(environment.s3Bucket, environment.s3File),
8691
appConfig,
87-
server
92+
server,
93+
false
8894
);
8995
break;
9096
}
@@ -105,13 +111,15 @@ export class ServerFactory {
105111
appConfig: AppConfig,
106112
server: express.Express,
107113
storage: S,
108-
specification: ApiSpecification
114+
specification: ApiSpecification,
115+
prettyPrintLog: boolean
109116
): A;
110117
},
111118
environment: { new (): E },
112119
storage: S,
113120
appConfig: AppConfig,
114-
server: express.Express
121+
server: express.Express,
122+
prettyPrintLog = false
115123
): C {
116124
const env = new environment();
117125
const swagger = new Swagger(
@@ -121,7 +129,7 @@ export class ServerFactory {
121129
);
122130
const core = new coreserver(
123131
server,
124-
new app(appConfig, server, storage, swagger)
132+
new app(appConfig, server, storage, swagger, prettyPrintLog)
125133
);
126134
return core;
127135
}

src/server/specifications/swagger/swagger.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { Output } from '../../utils/output';
1111
export class Swagger implements ApiSpecification {
1212
private swaggerSpec = new SwaggerSpec();
1313
private swaggerDefGen = new SwaggerDefGen();
14-
private logger = new Logger().logger;
14+
private logger = Logger.getInstance();
1515
private spec = {} as Spec;
1616
private server: express.Express;
1717
private config: SwaggerConfig;

src/server/utils/logger.ts

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,27 @@
1+
import * as pino from 'pino';
2+
13
export class Logger {
2-
logger = require('pino')(
3-
{
4-
prettyPrint: { colorize: true },
5-
},
6-
process.stderr
7-
);
4+
private static instance: pino.Logger;
5+
private constructor() {}
6+
7+
static init(prettyPrint = false) {
8+
Logger.instance = pino.default(
9+
{
10+
prettyPrint,
11+
},
12+
process.stderr
13+
);
14+
}
15+
16+
static getInstance(): pino.Logger {
17+
if (!Logger.instance) {
18+
return (Logger.instance = pino.default(
19+
{
20+
prettyPrint: false,
21+
},
22+
process.stderr
23+
));
24+
}
25+
return Logger.instance;
26+
}
827
}

src/server/utils/output.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import { Logger } from './logger';
22

33
export class Output {
44
static setWarning(message: string) {
5-
new Logger().logger.warning(message);
5+
Logger.getInstance().warning(message);
66
}
77
static setError(message: string) {
8-
new Logger().logger.error(message);
8+
Logger.getInstance().error(message);
99
}
1010
static setInfo(message: string) {
11-
new Logger().logger.info(message);
11+
Logger.getInstance().info(message);
1212
}
1313
}

0 commit comments

Comments
 (0)