Skip to content

Commit eeeeec3

Browse files
feat: added pino logger
1 parent 0583da6 commit eeeeec3

File tree

3 files changed

+53
-1
lines changed

3 files changed

+53
-1
lines changed

Diff for: package.json

+3
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,16 @@
5151
"typescript": "^5.3.3"
5252
},
5353
"dependencies": {
54+
"@types/pino": "^7.0.5",
5455
"@typescript-eslint/eslint-plugin": "^6.14.0",
5556
"@typescript-eslint/parser": "^6.14.0",
5657
"cors": "^2.8.5",
5758
"dotenv": "^16.3.1",
5859
"eslint": "^8.56.0",
5960
"express": "^4.18.2",
6061
"helmet": "^7.1.0",
62+
"pino": "^8.17.2",
63+
"pino-pretty": "^10.3.1",
6164
"prettier": "^3.1.1"
6265
},
6366
"engines": {

Diff for: src/server.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import express, { Application, Request, Response, NextFunction } from 'express';
22
import helmet from 'helmet';
33
import cors from 'cors';
4+
import pinoLogger from './utils/pino-logger';
45

56
const app: Application = express();
67
let unusedVar;
@@ -23,5 +24,6 @@ app.get('/health-check', (req: Request, res: Response) => {
2324
// Start the server
2425
const port = process.env.PORT || 3000;
2526
app.listen(port, () => {
26-
console.log(`Server is listening on port ${port}`);
27+
pinoLogger.info(`PINO_LOGGER_PRINT: Server is listening on port ${port}`);
28+
console.log(`CONSOLE_PRINT: Server is listening on port ${port}`);
2729
});

Diff for: src/utils/pino-logger.ts

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import fs from 'fs';
2+
import { join, resolve } from 'path';
3+
import { default as Pino } from 'pino';
4+
5+
const logDirectory = join(resolve(`${__dirname}/../../`), 'logs');
6+
7+
if (!fs.existsSync(logDirectory)) {
8+
fs.mkdirSync(logDirectory);
9+
}
10+
11+
const logFile = `${logDirectory}/app.log`;
12+
const transport = Pino.transport({
13+
targets: [
14+
{
15+
level: 'info',
16+
target: 'pino/file',
17+
options: {
18+
destination: logFile,
19+
},
20+
},
21+
...(process.env.NODE_ENV !== 'production'
22+
? [
23+
{
24+
...{
25+
level: 'info',
26+
target: 'pino-pretty',
27+
options: {
28+
colorizeObjects: true, //--colorizeObjects
29+
messageFormat: true, // --messageFormat
30+
timestampKey: 'time', // --timestampKey
31+
// include: 'level,time', // --include
32+
translateTime: `UTC:yyyy-mm-dd'T'HH:MM:ss'Z'`,
33+
},
34+
},
35+
},
36+
]
37+
: []),
38+
],
39+
});
40+
41+
const pinoLogger = Pino(transport);
42+
43+
/* for (let index = 0; index < 100000; index++) {
44+
pinoLogger.info(`Log File >>> ${logFile} >>> ${index}`);
45+
} */
46+
47+
export default pinoLogger;

0 commit comments

Comments
 (0)