@anhocva214/logzen 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import { Request, Response, NextFunction } from "express";
2
2
  export interface LogZenOptions {
3
3
  /**
4
- * Đường dẫn đến file log nơi các log sẽ được ghi.
5
- * Mặc định 'logzen.log' tại thư mục hiện hành.
4
+ * Path to the log file where logs will be written.
5
+ * Default is 'logzen.log' in the current working directory.
6
6
  */
7
7
  filePath?: string;
8
8
  }
9
9
  /**
10
10
  * LogZen middleware
11
- * @param options Cấu hình cho middleware
12
- * @returns Express middleware function
11
+ * @param options Middleware configuration options.
12
+ * @returns An Express middleware function.
13
13
  */
14
14
  export declare function logzen(options?: LogZenOptions): (req: Request, res: Response, next: NextFunction) => void;
15
15
  export default logzen;
package/dist/index.js CHANGED
@@ -28,33 +28,37 @@ const fs = __importStar(require("fs"));
28
28
  const path = __importStar(require("path"));
29
29
  /**
30
30
  * LogZen middleware
31
- * @param options Cấu hình cho middleware
32
- * @returns Express middleware function
31
+ * @param options Middleware configuration options.
32
+ * @returns An Express middleware function.
33
33
  */
34
34
  function logzen(options = {}) {
35
35
  const filePath = options.filePath || path.join(process.cwd(), "logzen.log");
36
- // Tạo stream ghi log chế độ append
36
+ // Create a write stream in append mode.
37
37
  const logStream = fs.createWriteStream(filePath, { flags: "a" });
38
38
  return (req, res, next) => {
39
39
  const startTime = Date.now();
40
40
  const { method, originalUrl, headers } = req;
41
- // Khai báo mảng chứa các phần của response
41
+ // Array to hold chunks of response data.
42
42
  const chunks = [];
43
- // Lưu lại tham chiếu của các hàm gốc
43
+ // Save references to the original res.write and res.end functions.
44
44
  const originalWrite = res.write.bind(res);
45
45
  const originalEnd = res.end.bind(res);
46
- // Ghi đè res.write để lưu lại các chunk dữ liệu của response
46
+ // Override res.write to capture response chunks.
47
47
  res.write = ((chunk, ...args) => {
48
- // chunk thể string hoặc Buffer
48
+ // chunk can be a string or Buffer.
49
49
  chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
50
50
  return originalWrite(chunk, ...args);
51
51
  });
52
- // Ghi đè res.end để hoàn thiện quá trình logging khi response kết thúc
52
+ // Override res.end to finalize logging when response is finished.
53
53
  res.end = ((chunk, ...args) => {
54
54
  if (chunk) {
55
55
  chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
56
56
  }
57
- const responseBody = Buffer.concat(chunks).toString("utf8");
57
+ let responseBody = Buffer.concat(chunks).toString("utf8");
58
+ // If the response body appears to be HTML, set it to "<HTML>"
59
+ if (/^\s*<\s*html/i.test(responseBody)) {
60
+ responseBody = "<HTML>";
61
+ }
58
62
  const duration = Date.now() - startTime;
59
63
  const logEntry = {
60
64
  time: new Date().toISOString(),
@@ -63,7 +67,7 @@ function logzen(options = {}) {
63
67
  method,
64
68
  url: originalUrl,
65
69
  headers,
66
- // Lưu ý: req.body sẽ giá trị nếu middleware body-parser đã được gọi trước
70
+ // Note: req.body will have a value if body-parser middleware has been applied.
67
71
  body: req.body || null,
68
72
  },
69
73
  response: {
@@ -71,7 +75,7 @@ function logzen(options = {}) {
71
75
  body: responseBody,
72
76
  },
73
77
  };
74
- // Ghi log dưới dạng JSON
78
+ // Write the log entry as JSON.
75
79
  logStream.write(JSON.stringify(logEntry) + "\n");
76
80
  return originalEnd(chunk, ...args);
77
81
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anhocva214/logzen",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "A lightweight logging middleware for Node.js/Express written in TypeScript that logs request and response details in JSON format.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -4,57 +4,63 @@ import * as path from "path";
4
4
 
5
5
  export interface LogZenOptions {
6
6
  /**
7
- * Đường dẫn đến file log nơi các log sẽ được ghi.
8
- * Mặc định 'logzen.log' tại thư mục hiện hành.
7
+ * Path to the log file where logs will be written.
8
+ * Default is 'logzen.log' in the current working directory.
9
9
  */
10
10
  filePath?: string;
11
11
  }
12
12
 
13
13
  /**
14
14
  * LogZen middleware
15
- * @param options Cấu hình cho middleware
16
- * @returns Express middleware function
15
+ * @param options Middleware configuration options.
16
+ * @returns An Express middleware function.
17
17
  */
18
18
  export function logzen(options: LogZenOptions = {}) {
19
19
  const filePath = options.filePath || path.join(process.cwd(), "logzen.log");
20
20
 
21
- // Tạo stream ghi log chế độ append
21
+ // Create a write stream in append mode.
22
22
  const logStream = fs.createWriteStream(filePath, { flags: "a" });
23
23
 
24
24
  return (req: Request, res: Response, next: NextFunction): void => {
25
25
  const startTime = Date.now();
26
26
  const { method, originalUrl, headers } = req;
27
27
 
28
- // Khai báo mảng chứa các phần của response
28
+ // Array to hold chunks of response data.
29
29
  const chunks: Buffer[] = [];
30
30
 
31
- // Lưu lại tham chiếu của các hàm gốc
31
+ // Save references to the original res.write and res.end functions.
32
32
  const originalWrite = res.write.bind(res);
33
33
  const originalEnd = res.end.bind(res);
34
34
 
35
- // Ghi đè res.write để lưu lại các chunk dữ liệu của response
35
+ // Override res.write to capture response chunks.
36
36
  res.write = ((chunk: any, ...args: any[]): boolean => {
37
- // chunk thể string hoặc Buffer
37
+ // chunk can be a string or Buffer.
38
38
  chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
39
39
  return originalWrite(chunk, ...args);
40
40
  }) as typeof res.write;
41
41
 
42
- // Ghi đè res.end để hoàn thiện quá trình logging khi response kết thúc
42
+ // Override res.end to finalize logging when response is finished.
43
43
  res.end = ((chunk?: any, ...args: any[]): Response => {
44
44
  if (chunk) {
45
45
  chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
46
46
  }
47
- const responseBody = Buffer.concat(chunks).toString("utf8");
47
+ let responseBody = Buffer.concat(chunks).toString("utf8");
48
+
49
+ // If the response body appears to be HTML, set it to "<HTML>"
50
+ if (/^\s*<\s*html/i.test(responseBody)) {
51
+ responseBody = "<HTML>";
52
+ }
53
+
48
54
  const duration = Date.now() - startTime;
49
55
 
50
56
  const logEntry = {
51
57
  time: new Date().toISOString(),
52
- duration, // Thời gian xử lý request (ms)
58
+ duration, // Request processing time (ms)
53
59
  request: {
54
60
  method,
55
61
  url: originalUrl,
56
62
  headers,
57
- // Lưu ý: req.body sẽ giá trị nếu middleware body-parser đã được gọi trước
63
+ // Note: req.body will have a value if body-parser middleware has been applied.
58
64
  body: req.body || null,
59
65
  },
60
66
  response: {
@@ -63,7 +69,7 @@ export function logzen(options: LogZenOptions = {}) {
63
69
  },
64
70
  };
65
71
 
66
- // Ghi log dưới dạng JSON
72
+ // Write the log entry as JSON.
67
73
  logStream.write(JSON.stringify(logEntry) + "\n");
68
74
 
69
75
  return originalEnd(chunk, ...args);
@@ -73,4 +79,4 @@ export function logzen(options: LogZenOptions = {}) {
73
79
  };
74
80
  }
75
81
 
76
- export default logzen;
82
+ export default logzen;