Skip to content

Commit 3994995

Browse files
authored
Issue32 logs improvement (#44)
* logger function created * logs folder added to store logs * utility function to show output * logProcessOutput function to show stdout and stderr * app.log added in .gitignore * app.log path corrected * file app.log deleted
1 parent 85929be commit 3994995

File tree

4 files changed

+34
-8
lines changed

4 files changed

+34
-8
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
node_modules
22
dist
3-
*.env
3+
*.env
4+
/logs/app.log

src/api.ts

+4-7
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ import {
2929
execPromise,
3030
exists,
3131
installDependencies,
32-
isIAllApps
32+
isIAllApps,
33+
logProcessOutput
3334
} from './utils/utils';
3435

3536
import { PackageError } from '@metacall/protocol/package';
@@ -236,12 +237,8 @@ export const deploy = catchAsync(
236237
currentFile
237238
});
238239

239-
proc.stdout?.on('data', (data: Buffer) => {
240-
console.log(data.toString().green);
241-
});
242-
proc.stderr?.on('data', (data: Buffer) => {
243-
console.log(data.toString().red);
244-
});
240+
logProcessOutput(proc.stdout, 'green');
241+
logProcessOutput(proc.stderr, 'red');
245242

246243
proc.on('message', (data: childProcessResponse) => {
247244
if (data.type === protocol.g) {

src/utils/logger.ts

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import * as fs from 'fs';
2+
import * as path from 'path';
3+
4+
const logFilePath = path.join(__dirname, '../../logs/');
5+
const logFileName = 'app.log';
6+
const logFileFullPath = path.join(logFilePath, logFileName);
7+
8+
export const logger = {
9+
log: (message: string): void => {
10+
const timeStamp = new Date().toISOString();
11+
const logMessage = `${timeStamp} - ${message}\n`;
12+
console.log(message);
13+
if (!fs.existsSync(logFileFullPath)) {
14+
fs.writeFileSync(logFileFullPath, '', { encoding: 'utf-8' });
15+
}
16+
fs.appendFileSync(logFileFullPath, logMessage, { encoding: 'utf-8' });
17+
}
18+
};

src/utils/utils.ts

+10
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
IAllApps,
1414
InspectObject
1515
} from '../constants';
16+
import { logger } from './logger';
1617

1718
export const dirName = (gitUrl: string): string =>
1819
String(gitUrl.split('/')[gitUrl.split('/').length - 1]).replace('.git', '');
@@ -139,3 +140,12 @@ export const diff = (
139140
export function isIAllApps(data: unknown): data is IAllApps {
140141
return typeof data === 'object' && data !== null;
141142
}
143+
144+
export function logProcessOutput(
145+
proc: NodeJS.ReadableStream | null,
146+
color: 'green' | 'red'
147+
): void {
148+
proc?.on('data', (data: Buffer) => {
149+
logger.log(data.toString()[color]);
150+
});
151+
}

0 commit comments

Comments
 (0)