logxpert 0.3.1 → 1.0.0

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/PATCHNOTE.fr.md CHANGED
@@ -1,18 +1,22 @@
1
1
  # Notes de Version
2
2
 
3
- ## v0.3.1
3
+ ## v1.0.0 LTS
4
4
 
5
- - Ajout de la création automatique du dossier de logs s'il n'existe pas afin d'éviter l'erreur `ENOENT`.
5
+ - **Stabilité & Support:** Cette version est désormais la version LTS, offrant une API stable pour une utilisation en production sur le long terme.
6
+ - **Configuration Améliorée:** Ajout d'options avancées pour personnaliser l'horodatage en console, incluant le format, le préfixe et le suffixe personnalisables.
7
+ - **Amélioration de la Journalisation dans les Fichiers:** Mise à jour des réglages pour l'enregistrement dans les fichiers et création automatique du dossier de logs s'il n'existe pas.
8
+ - **Documentation:** Mise à jour du README et de la référence API pour plus de clarté et de complétude.
9
+ - **Compatibilité Rétroactive:** Conservation de toutes les fonctionnalités des versions précédentes, incluant les méthodes pour la journalisation générale, d'erreur, d'avertissement, d'information et de débogage.
10
+
11
+ ## Versions Précédentes
6
12
 
7
- ## v0.3.0
13
+ ### v0.3.2
14
+ - Modification du motif par défaut de `filesName` passant de `'YYYY-MM-DD_HH:mm:ss'` à `'YYYY-MM-DD'`.
15
+
16
+ ### v0.3.1
17
+ - Ajout de la création automatique du dossier de logs s'il n'existe pas afin d'éviter l'erreur `ENOENT`.
8
18
 
9
- - Ajout du support de l'enregistrement dans des fichiers via [winston](https://github.com/winstonjs/winston) et [winston-daily-rotate-file](https://github.com/winstonjs/winston-daily-rotate-file).
19
+ ### v0.3.0
20
+ - Ajout du support de l'enregistrement dans des fichiers via winston et winston-daily-rotate-file.
10
21
  - Introduction de la méthode `log.settings()` pour configurer l'enregistrement dans les fichiers.
11
- - Mise à jour des options de configuration pour utiliser `filesName` à la place de l'ancienne propriété.
12
- - Réglages par défaut :
13
- - Dossier : `logs`
14
- - Motif de date (`filesName`) : `YYYY-MM-DD_HH:mm:ss`
15
- - Rétention maximale des fichiers : `14d`
16
- - Taille maximale par fichier : `20m`
17
- - `zippedArchive` : par défaut `false` à moins qu'une autre valeur soit fournie.
18
- - La journalisation dans la console conserve une sortie colorée et formatée.
22
+ - Mise à jour des options de configuration pour utiliser `filesName` à la place de l'ancienne propriété.
package/PATCHNOTE.md CHANGED
@@ -1,18 +1,22 @@
1
1
  # Patch Notes
2
2
 
3
- ## v0.3.1
3
+ ## v1.0.0 LTS
4
4
 
5
- - Ensure the log folder is created if it does not exist to prevent `ENOENT` errors.
5
+ - **Stability & Support:** This release is now the LTS version, providing a stable API for long-term production use.
6
+ - **Enhanced Configuration:** Added advanced configuration for console timestamps, including customizable format, prefix, and suffix.
7
+ - **File Logging Improvements:** Updated file logging settings and ensured the log folder is automatically created if it doesn't exist.
8
+ - **Documentation:** Updated README and API references for clarity and completeness.
9
+ - **Backward Compatibility:** Retained all features from previous versions, including methods for general, error, warning, info, and debug logging.
6
10
 
7
- ## v0.3.0
11
+ ## Previous Versions
8
12
 
13
+ ### v0.3.2
14
+ - Changed the default `filesName` pattern from `'YYYY-MM-DD_HH:mm:ss'` to `'YYYY-MM-DD'`.
15
+
16
+ ### v0.3.1
17
+ - Ensured the log folder is created if it does not exist to prevent `ENOENT` errors.
18
+
19
+ ### v0.3.0
9
20
  - Added file logging support using winston and winston-daily-rotate-file.
10
21
  - Introduced `log.settings()` to configure file logging.
11
- - Updated configuration options to use `filesName` instead of the previous property name.
12
- - Default settings:
13
- - Folder: `logs`
14
- - Date pattern (`filesName`): `YYYY-MM-DD_HH:mm:ss`
15
- - Maximum file retention: `14d`
16
- - Maximum file size: `20m`
17
- - `zippedArchive`: default is `false` unless provided.
18
- - Console logging remains with colorful formatted output.
22
+ - Updated configuration options to use `filesName` instead of the previous property name.
package/README.fr.md CHANGED
@@ -1,12 +1,12 @@
1
- # LogXpert
1
+ # LogXpert v1.0.0 LTS
2
2
 
3
- LogXpert est une bibliothèque de logs puissante pour Node.js qui offre des méthodes de log simples à utiliser avec une sortie colorée et, en option, l'enregistrement dans un fichier. Cette documentation explique l'installation et l'utilisation du module.
3
+ LogXpert est une bibliothèque de logs puissante pour Node.js qui offre des méthodes de log simples à utiliser avec une sortie colorée et, en option, l'enregistrement dans un fichier. Cette version est la version LTS (Long Term Support) avec une API stable et des options de configuration améliorées.
4
4
 
5
5
  ## Table des Matières
6
6
  - [Installation](#installation)
7
7
  - [Utilisation](#utilisation)
8
8
  - [Journalisation de base](#journalisation-de-base)
9
- - [Journalisation avancée : Fichiers de logs](#journalisation-avancee-fichiers-de-logs)
9
+ - [Journalisation avancée : Fichiers de logs & Personnalisation de l'horodatage en console](#journalisation-avancee-fichiers-de-logs--personnalisation-de-lhorodatage-en-console)
10
10
  - [Référence API](#référence-api)
11
11
  - [Informations Supplémentaires](#informations-supplémentaires)
12
12
  - [Licence](#licence)
@@ -44,22 +44,28 @@ log.info("Ceci est un message d'information.");
44
44
  log.debug("Ceci est un message de debug.");
45
45
  ```
46
46
 
47
- ### Journalisation avancée : Fichiers de logs
47
+ ### Journalisation avancée : Fichiers de logs & Personnalisation de l'horodatage en console
48
48
 
49
- LogXpert supporte l'enregistrement des logs dans des fichiers à l'aide de [winston](https://github.com/winstonjs/winston) et [winston-daily-rotate-file](https://github.com/winstonjs/winston-daily-rotate-file). Pour activer l'enregistrement dans un fichier, configurez les paramètres via la méthode `log.settings()`. Si non configuré, seule la journalisation dans la console est active.
49
+ LogXpert supporte la journalisation dans des fichiers via [winston](https://github.com/winstonjs/winston) et [winston-daily-rotate-file](https://github.com/winstonjs/winston-daily-rotate-file). Vous pouvez configurer l'enregistrement dans un fichier ainsi que personnaliser l'horodatage en console grâce à `log.settings()`.
50
50
 
51
- Exemple de configuration pour activer l'enregistrement dans un fichier :
51
+ Exemple de configuration :
52
52
 
53
53
  ```js
54
54
  const log = require('logxpert');
55
55
 
56
56
  log.settings({
57
+ console: {
58
+ enableTimestamp: true,
59
+ timestampFormat: 'YYYY-MM-DD HH:mm:ss',
60
+ timestampPrefix: '[START] ',
61
+ timestampSuffix: ' [END]'
62
+ },
57
63
  files: {
58
64
  folder: 'logs',
59
- filesName: 'YYYY-MM-DD_HH:mm:ss',
65
+ filesName: 'YYYY-MM-DD',
60
66
  maxFile: '14d',
61
67
  maxSize: '20m',
62
- zippedArchive: true
68
+ zippedArchive: false
63
69
  }
64
70
  });
65
71
  ```
@@ -81,12 +87,18 @@ log.settings({
81
87
  - **log.debug(message: string):**
82
88
  Enregistre un message de debug.
83
89
 
84
- - **log.settings(options: Object):**
85
- Configure les options d'enregistrement des logs dans un fichier. L'objet doit contenir la propriété `files` avec les options suivantes :
86
-
90
+ - **log.settings(options: object):**
91
+ Configure les options d'enregistrement dans un fichier et de personnalisation de la sortie console.
92
+ **Options Console:**
93
+ - `enableTimestamp` (boolean) : Active/désactive l'horodatage (par défaut : `true`).
94
+ - `timestampFormat` (string) : Format de l'horodatage (par défaut : `'YYYY-MM-DD HH:mm:ss'`).
95
+ - `timestampPrefix` (string) : Préfixe de l'horodatage.
96
+ - `timestampSuffix` (string) : Suffixe de l'horodatage.
97
+
98
+ **Options Fichiers:**
87
99
  - `folder` (string) : Répertoire où les fichiers de logs seront stockés (par défaut : `'logs'`).
88
- - `filesName` (string) : Motif de date utilisé dans le nom des fichiers de log (par défaut : `'YYYY-MM-DD_HH:mm:ss'`).
89
- - `maxFile` (string) : Durée de rétention maximale des fichiers (par défaut : `'14d'`).
100
+ - `filesName` (string) : Motif de date pour le nom des fichiers de logs (par défaut : `'YYYY-MM-DD'`).
101
+ - `maxFile` (string) : Durée maximale de rétention des fichiers (par défaut : `'14d'`).
90
102
  - `maxSize` (string) : Taille maximale par fichier de log (par défaut : `'20m'`).
91
103
  - `zippedArchive` (boolean) : Archive les logs au format zip (par défaut : `false`).
92
104
 
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
- # LogXpert
1
+ # LogXpert v1.0.0 LTS
2
2
 
3
- LogXpert is a powerful logging library for Node.js that provides easy-to-use logging methods with colorful formatted output and optional file logging support. This documentation explains the installation and usage of the module.
3
+ LogXpert is a powerful logging library for Node.js that provides easy-to-use logging methods with colorful formatted output and optional file logging support. This release marks our Long Term Support (LTS) version with a stable API and enhanced configuration options.
4
4
 
5
5
  ## Table of Contents
6
6
  - [Installation](#installation)
7
7
  - [Usage](#usage)
8
8
  - [Basic Logging](#basic-logging)
9
- - [Advanced Logging: File Output](#advanced-logging-file-output)
9
+ - [Advanced Logging: File Output & Custom Console Timestamp](#advanced-logging-file-output--custom-console-timestamp)
10
10
  - [API Reference](#api-reference)
11
11
  - [Additional Information](#additional-information)
12
12
  - [License](#license)
@@ -44,27 +44,33 @@ log.info('This is an informational message.');
44
44
  log.debug('This is a debug message.');
45
45
  ```
46
46
 
47
- ### Advanced Logging: File Output
47
+ ### Advanced Logging: File Output & Custom Console Timestamp
48
48
 
49
- LogXpert supports file logging using [winston](https://github.com/winstonjs/winston) and [winston-daily-rotate-file](https://github.com/winstonjs/winston-daily-rotate-file). To enable file logging, you can configure it with custom settings via the `log.settings()` method. If not configured, only console logging is active.
49
+ LogXpert supports file logging using [winston](https://github.com/winstonjs/winston) and [winston-daily-rotate-file](https://github.com/winstonjs/winston-daily-rotate-file). You can configure file logging and customize console timestamps via `log.settings()`.
50
50
 
51
- Example configuration to enable file logging:
51
+ Example configuration to enable file logging and customize console timestamp:
52
52
 
53
53
  ```js
54
54
  const log = require('logxpert');
55
55
 
56
56
  log.settings({
57
+ console: {
58
+ enableTimestamp: true,
59
+ timestampFormat: 'YYYY-MM-DD HH:mm:ss',
60
+ timestampPrefix: '[START] ',
61
+ timestampSuffix: ' [END]'
62
+ },
57
63
  files: {
58
64
  folder: 'logs',
59
- filesName: 'YYYY-MM-DD_HH:mm:ss',
65
+ filesName: 'YYYY-MM-DD',
60
66
  maxFile: '14d',
61
67
  maxSize: '20m',
62
- zippedArchive: true
68
+ zippedArchive: false
63
69
  }
64
70
  });
65
71
  ```
66
72
 
67
- ### API Reference
73
+ ## API Reference
68
74
 
69
75
  - **log(message: string):**
70
76
  Logs a general message using the `info` level.
@@ -81,15 +87,20 @@ log.settings({
81
87
  - **log.debug(message: string):**
82
88
  Logs a debug message.
83
89
 
84
- - **log.settings(options: Object):**
85
- Configures the file logging options. Accepts an object with a `files` property.
86
- **Options**:
90
+ - **log.settings(options: object):**
91
+ Configures file logging and console output options.
92
+ **Console Options:**
93
+ - `enableTimestamp` (boolean): Enable/disable timestamp (default: `true`).
94
+ - `timestampFormat` (string): Format for the timestamp (default: `'YYYY-MM-DD HH:mm:ss'`).
95
+ - `timestampPrefix` (string): Prefix for the timestamp.
96
+ - `timestampSuffix` (string): Suffix for the timestamp.
87
97
 
98
+ **Files Options:**
88
99
  - `folder` (string): Directory where log files will be stored (default: `'logs'`).
89
- - `filesName` (string): Date pattern used in the log file name (default: `'YYYY-MM-DD_HH:mm:ss'`).
100
+ - `filesName` (string): Date pattern for the log file name (default: `'YYYY-MM-DD'`).
90
101
  - `maxFile` (string): Maximum file retention (default: `'14d'`).
91
102
  - `maxSize` (string): Maximum size per log file (default: `'20m'`).
92
- - `zippedArchive` (boolean): Whether to archive the logs in zipped format (default: `false`).
103
+ - `zippedArchive` (boolean): Archive logs in zip format (default: `false`).
93
104
 
94
105
  ## Additional Information
95
106
 
package/main.js CHANGED
@@ -2,40 +2,116 @@ const fs = require('fs');
2
2
  const { createLogger, format, transports } = require('winston');
3
3
  require('winston-daily-rotate-file');
4
4
 
5
- // Custom format for logger
5
+ /**
6
+ * @typedef {Object} ConsoleOptions
7
+ * @property {boolean} [enableTimestamp=true] - Enable or disable timestamp in console logs.
8
+ * @property {string} [timestampFormat='YYYY-MM-DD HH:mm:ss'] - Format for the timestamp.
9
+ * @property {string} [timestampPrefix=''] - String to prefix the timestamp.
10
+ * @property {string} [timestampSuffix=''] - String to suffix the timestamp.
11
+ */
12
+
13
+ /**
14
+ * @typedef {Object} FilesOptions
15
+ * @property {string} [folder='logs'] - Directory where log files will be stored.
16
+ * @property {string} [filesName='YYYY-MM-DD'] - Date pattern used in the log file name.
17
+ * @property {string} [maxFile='14d'] - Maximum file retention time.
18
+ * @property {string} [maxSize='20m'] - Maximum file size per log file.
19
+ * @property {boolean} [zippedArchive=false] - Whether to archive logs as zip.
20
+ */
21
+
22
+ /**
23
+ * @typedef {Object} LogSettingsOptions
24
+ * @property {ConsoleOptions} [console] - Options for customizing console output.
25
+ * @property {FilesOptions} [files] - Options for configuring file logging.
26
+ */
27
+
28
+ // Custom format for logger (handles the timestamp if present)
6
29
  const customFormat = format.printf(({ timestamp, level, message }) => {
7
- return `${timestamp} [${level}]: ${message}`;
30
+ return timestamp ? `${timestamp} [${level}]: ${message}` : `[${level}]: ${message}`;
8
31
  });
9
32
 
10
- // Create a logger with console transport only
33
+ // Create a default console transport with timestamp enabled by default
34
+ let consoleTransport = new transports.Console({
35
+ format: format.combine(
36
+ format.colorize(),
37
+ format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
38
+ customFormat
39
+ )
40
+ });
41
+
42
+ // Create a logger with the default console transport
11
43
  const logger = createLogger({
12
44
  level: 'debug',
13
45
  format: format.combine(
14
46
  format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
15
47
  customFormat
16
48
  ),
17
- transports: [
18
- new transports.Console({
19
- format: format.combine(
20
- format.colorize(),
21
- format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
22
- customFormat
23
- )
24
- })
25
- ]
49
+ transports: [consoleTransport]
26
50
  });
27
51
 
28
52
  // Reference to file transport (added via settings)
29
53
  let fileTransport;
30
54
 
31
- // Settings function to enable file logging
32
- // Example usage:
33
- // log.settings({ files: { folder: 'logs', filesName: 'YYYY-MM-DD_HH:mm:ss', maxFile: '14d', maxSize: '20m', zippedArchive: false }})
55
+ /**
56
+ * Configures logging settings for both console and file transports.
57
+ *
58
+ * @param {LogSettingsOptions} options - The settings for console and file logging.
59
+ * @example
60
+ * // Customize console timestamp and enable file logging
61
+ * log.settings({
62
+ * console: {
63
+ * enableTimestamp: true,
64
+ * timestampFormat: 'YYYY-MM-DD HH:mm:ss',
65
+ * timestampPrefix: '[START] ',
66
+ * timestampSuffix: ' [END]'
67
+ * },
68
+ * files: {
69
+ * folder: 'logs',
70
+ * filesName: 'YYYY-MM-DD',
71
+ * maxFile: '14d',
72
+ * maxSize: '20m',
73
+ * zippedArchive: false
74
+ * }
75
+ * });
76
+ */
34
77
  function applySettings(options = {}) {
78
+ // Update console transport if configuration is provided
79
+ if (options.console) {
80
+ const enableTimestamp = options.console.enableTimestamp !== undefined ? options.console.enableTimestamp : true;
81
+ const timestampFormat = options.console.timestampFormat || 'YYYY-MM-DD HH:mm:ss';
82
+ const timestampPrefix = options.console.timestampPrefix || '';
83
+ const timestampSuffix = options.console.timestampSuffix || '';
84
+
85
+ // Remove the current console transport
86
+ logger.remove(consoleTransport);
87
+
88
+ // Create new console transport based on the provided options
89
+ consoleTransport = new transports.Console({
90
+ format: enableTimestamp
91
+ ? format.combine(
92
+ format.colorize(),
93
+ format.timestamp({ format: timestampFormat }),
94
+ // Append prefix and suffix to the timestamp value
95
+ format((info) => {
96
+ if (info.timestamp) {
97
+ info.timestamp = timestampPrefix + info.timestamp + timestampSuffix;
98
+ }
99
+ return info;
100
+ })(),
101
+ customFormat
102
+ )
103
+ : format.combine(
104
+ format.colorize(),
105
+ customFormat
106
+ )
107
+ });
108
+ logger.add(consoleTransport);
109
+ }
110
+
111
+ // Enable file logging if options.files is provided
35
112
  if (options.files) {
36
- // Set defaults if not provided
37
113
  const folder = options.files.folder || 'logs';
38
- const datePattern = options.files.filesName || 'YYYY-MM-DD_HH:mm:ss';
114
+ const datePattern = options.files.filesName || 'YYYY-MM-DD';
39
115
  const maxFiles = options.files.maxFile || '14d';
40
116
  const maxSize = options.files.maxSize || '20m';
41
117
  const zippedArchive = options.files.zippedArchive !== undefined ? options.files.zippedArchive : false;
@@ -63,28 +139,48 @@ function applySettings(options = {}) {
63
139
  }
64
140
  }
65
141
 
66
- // Create a simplified logging interface
142
+ /**
143
+ * Logs a general message using the info level.
144
+ *
145
+ * @param {string} message - Message to be logged.
146
+ */
67
147
  function log(message) {
68
148
  logger.info(message);
69
149
  }
70
150
 
151
+ /**
152
+ * Logs an error message.
153
+ * @param {string} message - Error message.
154
+ */
71
155
  log.error = function (message) {
72
156
  logger.error(message);
73
157
  };
74
158
 
159
+ /**
160
+ * Logs a warning message.
161
+ * @param {string} message - Warning message.
162
+ */
75
163
  log.warn = function (message) {
76
164
  logger.warn(message);
77
165
  };
78
166
 
167
+ /**
168
+ * Logs an informational message.
169
+ * @param {string} message - Informational message.
170
+ */
79
171
  log.info = function (message) {
80
172
  logger.info(message);
81
173
  };
82
174
 
175
+ /**
176
+ * Logs a debug message.
177
+ * @param {string} message - Debug message.
178
+ */
83
179
  log.debug = function (message) {
84
180
  logger.debug(message);
85
181
  };
86
182
 
87
- // Expose the settings function for configuring file logging
183
+ // Expose the settings function for configuring file logging and console output customization
88
184
  log.settings = applySettings;
89
185
 
90
186
  module.exports = log;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "logxpert",
3
- "version": "0.3.1",
3
+ "version": "1.0.0",
4
4
  "description": "A powerful logging library for Node.js",
5
5
  "main": "main.js",
6
6
  "repository": {