logxpert 1.0.1 → 1.0.3
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 +12 -2
- package/PATCHNOTE.md +12 -2
- package/README.fr.md +6 -8
- package/README.md +6 -8
- package/main.js +51 -56
- package/package.json +1 -1
package/PATCHNOTE.fr.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Notes de Version
|
|
2
2
|
|
|
3
|
+
## v1.0.3
|
|
4
|
+
|
|
5
|
+
- **Correction de la désactivation de l'horodatage :** Correction du problème où, malgré `enableTimestamp: false`, l'horodatage était toujours affiché. L'horodatage est désormais complètement désactivé en console lorsque requis.
|
|
6
|
+
- **Correction de l'horodatage personnalisé avec décoration :** Résolution des problèmes de formatage lors de l'utilisation de formats d'horodatage personnalisés avec des caractères décoratifs (par exemple, des crochets). Des formats comme `"Voici la date et l'heure: [YYYY-MM-DD HH:mm:ss] - "` s'affichent correctement.
|
|
7
|
+
- Toutes les améliorations et fonctionnalités précédentes de la v1.0.2 LTS restent intactes.
|
|
8
|
+
|
|
9
|
+
## v1.0.2
|
|
10
|
+
|
|
11
|
+
- **Préservation de la Décoration dans l'Horodatage Personnalisé :** Ajout d'une fonction d'assistance dans le module de log qui permet de conserver les caractères de décoration (tels que [], (), {}) dans le `timestampFormat` tel que défini par l'utilisateur. Cette amélioration permet d'utiliser des formats comme `"Voici la date et l'heure: [YYYY-MM-DD HH:mm:ss] - "` ou `"date: YYYY-MM-DD heure: HH:mm:ss - "` sans que Moment.js n'échappe automatiquement les crochets.
|
|
12
|
+
- **Autres Améliorations et Corrections de Bugs :** Toutes les améliorations et fonctionnalités précédentes de la v1.0.1 LTS restent intactes.
|
|
13
|
+
|
|
14
|
+
|
|
3
15
|
## v1.0.1
|
|
4
16
|
|
|
5
17
|
- Amélioration de la prise en charge des formats d'horodatage personnalisés en console via Moment.js. Les utilisateurs peuvent désormais fournir des formats entièrement personnalisés (ex. : "Voici la date et l'heure: [YYYY-MM-DD HH:mm:ss] - " ou "date: YYYY-MM-DD heure: HH:mm:ss - ") qui rendent correctement les dates dynamiques et le texte littéral.
|
|
@@ -12,8 +24,6 @@
|
|
|
12
24
|
- **Documentation:** Mise à jour du README et de la référence API pour plus de clarté et de complétude.
|
|
13
25
|
- **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.
|
|
14
26
|
|
|
15
|
-
## Versions Précédentes
|
|
16
|
-
|
|
17
27
|
### v0.3.2
|
|
18
28
|
- Modification du motif par défaut de `filesName` passant de `'YYYY-MM-DD_HH:mm:ss'` à `'YYYY-MM-DD'`.
|
|
19
29
|
|
package/PATCHNOTE.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Patch Notes
|
|
2
2
|
|
|
3
|
+
## v1.0.3
|
|
4
|
+
|
|
5
|
+
- **Timestamp Disabling Fix:** Corrected the issue where setting `enableTimestamp: false` still printed a timestamp. Timestamps are now completely disabled in the console output when requested.
|
|
6
|
+
- **Custom Timestamp Decoration Fix:** Resolved formatting glitches when using custom timestamp formats with decorative characters (e.g., square brackets) so that formats like `"This is the date: [YYYY-MM-DD HH:mm:ss] - "` render correctly.
|
|
7
|
+
- All previous enhancements and features from v1.0.2 LTS remain intact.
|
|
8
|
+
|
|
9
|
+
## v1.0.2
|
|
10
|
+
|
|
11
|
+
- **Custom Timestamp Decoration Preservation:** Introduced a helper function in the logging module to allow any decoration characters (such as [], (), {}) in the `timestampFormat` to be preserved as supplied by the user. This improvement lets you use formats like `"This is the date: [YYYY-MM-DD HH:mm:ss] - "` or `"date: YYYY-MM-DD heure: HH:mm:ss - "` without Moment.js automatically escaping the brackets.
|
|
12
|
+
- **Other Enhancements and Bug Fixes:** All previous improvements and features from v1.0.1 LTS remain intact.
|
|
13
|
+
|
|
14
|
+
|
|
3
15
|
## v1.0.1
|
|
4
16
|
|
|
5
17
|
- Improved support for fully custom console timestamp formats using Moment.js. Users can now supply completely custom formats (e.g., "This is the time: [YYYY-MM-DD HH:mm:ss] - " or "date: YYYY-MM-DD heure: HH:mm:ss - ") that correctly render dynamic dates and literal text.
|
|
@@ -12,8 +24,6 @@
|
|
|
12
24
|
- **Documentation:** Updated README and API references for clarity and completeness.
|
|
13
25
|
- **Backward Compatibility:** Retained all features from previous versions, including methods for general, error, warning, info, and debug logging.
|
|
14
26
|
|
|
15
|
-
## Previous Versions
|
|
16
|
-
|
|
17
27
|
### v0.3.2
|
|
18
28
|
- Changed the default `filesName` pattern from `'YYYY-MM-DD_HH:mm:ss'` to `'YYYY-MM-DD'`.
|
|
19
29
|
|
package/README.fr.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# LogXpert
|
|
1
|
+
# LogXpert
|
|
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.
|
|
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.
|
|
4
4
|
|
|
5
5
|
## Table des Matières
|
|
6
6
|
- [Installation](#installation)
|
|
@@ -46,7 +46,7 @@ log.debug("Ceci est un message de debug.");
|
|
|
46
46
|
|
|
47
47
|
### Journalisation avancée : Fichiers de logs & Personnalisation de l'horodatage en console
|
|
48
48
|
|
|
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).
|
|
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).
|
|
50
50
|
|
|
51
51
|
Exemple de configuration :
|
|
52
52
|
|
|
@@ -56,10 +56,8 @@ const log = require('logxpert');
|
|
|
56
56
|
log.settings({
|
|
57
57
|
console: {
|
|
58
58
|
enableTimestamp: true,
|
|
59
|
-
//
|
|
59
|
+
// Vous pouvez inclure des caractères de décoration, par exemple :
|
|
60
60
|
timestampFormat: "Voici la date et l'heure: [YYYY-MM-DD HH:mm:ss] - ",
|
|
61
|
-
// Exemple 2 : Séparer les tokens pour la date et l'heure
|
|
62
|
-
// timestampFormat: "date: YYYY-MM-DD heure: HH:mm:ss - "
|
|
63
61
|
timestampPrefix: '',
|
|
64
62
|
timestampSuffix: ''
|
|
65
63
|
},
|
|
@@ -94,12 +92,12 @@ log.settings({
|
|
|
94
92
|
Configure les options d'enregistrement dans un fichier et de personnalisation de la sortie console.
|
|
95
93
|
**Options Console :**
|
|
96
94
|
- `enableTimestamp` (boolean) : Active/désactive l'horodatage (par défaut : `true`).
|
|
97
|
-
- `timestampFormat` (string) : Format de l'horodatage (par défaut : `'YYYY-MM-DD HH:mm:ss'`).
|
|
95
|
+
- `timestampFormat` (string) : Format de l'horodatage incluant tout texte littéral ou décoration (par défaut : `'YYYY-MM-DD HH:mm:ss'`).
|
|
98
96
|
- `timestampPrefix` (string) : Préfixe de l'horodatage.
|
|
99
97
|
- `timestampSuffix` (string) : Suffixe de l'horodatage.
|
|
100
98
|
|
|
101
99
|
**Options Fichiers :**
|
|
102
|
-
- `folder` (string) : Répertoire où les fichiers de logs
|
|
100
|
+
- `folder` (string) : Répertoire où seront stockés les fichiers de logs (par défaut : `'logs'`).
|
|
103
101
|
- `filesName` (string) : Motif de date pour le nom des fichiers de logs (par défaut : `'YYYY-MM-DD'`).
|
|
104
102
|
- `maxFile` (string) : Durée maximale de rétention des fichiers (par défaut : `'14d'`).
|
|
105
103
|
- `maxSize` (string) : Taille maximale par fichier de log (par défaut : `'20m'`).
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# LogXpert
|
|
1
|
+
# LogXpert
|
|
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
|
|
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
|
|
4
4
|
|
|
5
5
|
## Table of Contents
|
|
6
6
|
- [Installation](#installation)
|
|
@@ -46,7 +46,7 @@ log.debug('This is a debug message.');
|
|
|
46
46
|
|
|
47
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).
|
|
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).
|
|
50
50
|
|
|
51
51
|
Example configuration:
|
|
52
52
|
|
|
@@ -56,10 +56,8 @@ const log = require('logxpert');
|
|
|
56
56
|
log.settings({
|
|
57
57
|
console: {
|
|
58
58
|
enableTimestamp: true,
|
|
59
|
-
//
|
|
60
|
-
timestampFormat: "
|
|
61
|
-
// Example 2: Separating date and time tokens:
|
|
62
|
-
// timestampFormat: "date: YYYY-MM-DD heure: HH:mm:ss - "
|
|
59
|
+
// You can now include decoration characters as desired:
|
|
60
|
+
timestampFormat: "This is the date: [YYYY-MM-DD HH:mm:ss] - ",
|
|
63
61
|
timestampPrefix: '',
|
|
64
62
|
timestampSuffix: ''
|
|
65
63
|
},
|
|
@@ -94,7 +92,7 @@ log.settings({
|
|
|
94
92
|
Configures file logging and console output options.
|
|
95
93
|
**Console Options:**
|
|
96
94
|
- `enableTimestamp` (boolean): Enable/disable timestamp (default: `true`).
|
|
97
|
-
- `timestampFormat` (string): Format for the timestamp including literal text
|
|
95
|
+
- `timestampFormat` (string): Format for the timestamp including any desired literal text or decoration (default: `'YYYY-MM-DD HH:mm:ss'`).
|
|
98
96
|
- `timestampPrefix` (string): Prefix for the timestamp.
|
|
99
97
|
- `timestampSuffix` (string): Suffix for the timestamp.
|
|
100
98
|
|
package/main.js
CHANGED
|
@@ -3,12 +3,33 @@ const moment = require('moment'); // Add moment as a dependency: npm install mom
|
|
|
3
3
|
const { createLogger, format, transports } = require('winston');
|
|
4
4
|
require('winston-daily-rotate-file');
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Helper function to format the timestamp while preserving square brackets.
|
|
8
|
+
* It replaces "[" with "%%LB%%" and "]" with "%%RB%%" to prevent Moment.js from
|
|
9
|
+
* treating the contents as literal text. After formatting, the placeholders are restored.
|
|
10
|
+
*
|
|
11
|
+
* @param {string} fmt - The user-defined format string.
|
|
12
|
+
* @returns {string} - The formatted timestamp with square brackets preserved.
|
|
13
|
+
*
|
|
14
|
+
* Example:
|
|
15
|
+
* Input: "This is the date: [YYYY-MM-DD HH:mm:ss] - "
|
|
16
|
+
* Might output: "This is the date: [2025-03-21 15:30:45] - "
|
|
17
|
+
*/
|
|
18
|
+
function formatCustomTimestamp(fmt) {
|
|
19
|
+
// Use a placeholder that's unlikely to be parsed by moment
|
|
20
|
+
const temp = fmt.replace(/\[/g, '%%LB%%').replace(/\]/g, '%%RB%%');
|
|
21
|
+
const formatted = moment().format(temp);
|
|
22
|
+
// Restore the original square brackets
|
|
23
|
+
return formatted.replace(/%%LB%%/g, '[').replace(/%%RB%%/g, ']');
|
|
24
|
+
}
|
|
25
|
+
|
|
6
26
|
/**
|
|
7
27
|
* @typedef {Object} ConsoleOptions
|
|
8
28
|
* @property {boolean} [enableTimestamp=true] - Enable or disable timestamp in console logs.
|
|
9
|
-
* @property {string} [timestampFormat='YYYY-MM-DD HH:mm:ss'] -
|
|
10
|
-
* You can include
|
|
11
|
-
*
|
|
29
|
+
* @property {string} [timestampFormat='YYYY-MM-DD HH:mm:ss'] - Custom format for the timestamp.
|
|
30
|
+
* You can include any decoration characters ([], (), {}) without interference.
|
|
31
|
+
* For example:
|
|
32
|
+
* - "This is the date: [YYYY-MM-DD HH:mm:ss] - "
|
|
12
33
|
* - "date: YYYY-MM-DD heure: HH:mm:ss - "
|
|
13
34
|
*/
|
|
14
35
|
|
|
@@ -35,28 +56,24 @@ const customFormat = format.printf(({ timestamp, level, message }) => {
|
|
|
35
56
|
// Default console timestamp format
|
|
36
57
|
const defaultConsoleFormat = 'YYYY-MM-DD HH:mm:ss';
|
|
37
58
|
|
|
38
|
-
// Create
|
|
39
|
-
|
|
59
|
+
// Create the global logger. Its default format will be overridden by the console transport settings.
|
|
60
|
+
const logger = createLogger({
|
|
61
|
+
level: 'debug',
|
|
40
62
|
format: format.combine(
|
|
41
|
-
format.
|
|
42
|
-
format.timestamp({
|
|
43
|
-
format: () => moment().format(defaultConsoleFormat)
|
|
44
|
-
}),
|
|
63
|
+
format.timestamp({ format: () => moment().format(defaultConsoleFormat) }),
|
|
45
64
|
customFormat
|
|
46
65
|
)
|
|
47
66
|
});
|
|
48
67
|
|
|
49
|
-
// Create
|
|
50
|
-
|
|
51
|
-
level: 'debug',
|
|
68
|
+
// Create default console transport (will be replaced via settings)
|
|
69
|
+
let consoleTransport = new transports.Console({
|
|
52
70
|
format: format.combine(
|
|
53
|
-
format.
|
|
54
|
-
|
|
55
|
-
}),
|
|
71
|
+
format.colorize(),
|
|
72
|
+
format.timestamp({ format: () => moment().format(defaultConsoleFormat) }),
|
|
56
73
|
customFormat
|
|
57
|
-
)
|
|
58
|
-
transports: [consoleTransport]
|
|
74
|
+
)
|
|
59
75
|
});
|
|
76
|
+
logger.add(consoleTransport);
|
|
60
77
|
|
|
61
78
|
// Reference to file transport (added via settings)
|
|
62
79
|
let fileTransport;
|
|
@@ -66,12 +83,12 @@ let fileTransport;
|
|
|
66
83
|
*
|
|
67
84
|
* @param {LogSettingsOptions} options - The settings for both console and file logging.
|
|
68
85
|
* @example
|
|
69
|
-
* // Example: Fully custom console timestamp
|
|
86
|
+
* // Example: Fully custom console timestamp that preserves decorational brackets,
|
|
70
87
|
* // and enabling file logging.
|
|
71
88
|
* log.settings({
|
|
72
89
|
* console: {
|
|
73
90
|
* enableTimestamp: true,
|
|
74
|
-
* timestampFormat: "
|
|
91
|
+
* timestampFormat: "This is the date: [YYYY-MM-DD HH:mm:ss] - "
|
|
75
92
|
* },
|
|
76
93
|
* files: {
|
|
77
94
|
* folder: 'logs',
|
|
@@ -83,7 +100,6 @@ let fileTransport;
|
|
|
83
100
|
* });
|
|
84
101
|
*/
|
|
85
102
|
function applySettings(options = {}) {
|
|
86
|
-
// Update console transport if configuration is provided
|
|
87
103
|
if (options.console) {
|
|
88
104
|
const enableTimestamp = options.console.enableTimestamp !== undefined ? options.console.enableTimestamp : true;
|
|
89
105
|
const timestampFormat = options.console.timestampFormat || defaultConsoleFormat;
|
|
@@ -91,26 +107,25 @@ function applySettings(options = {}) {
|
|
|
91
107
|
// Remove the current console transport
|
|
92
108
|
logger.remove(consoleTransport);
|
|
93
109
|
|
|
94
|
-
//
|
|
95
|
-
|
|
110
|
+
// Build the console format based on the enableTimestamp flag.
|
|
111
|
+
const consoleFormat = enableTimestamp
|
|
112
|
+
? format.combine(
|
|
113
|
+
format.colorize(),
|
|
114
|
+
format.timestamp({ format: () => formatCustomTimestamp(timestampFormat) }),
|
|
115
|
+
customFormat
|
|
116
|
+
)
|
|
117
|
+
: format.combine(
|
|
118
|
+
format((info) => { delete info.timestamp; return info; })(),
|
|
119
|
+
format.colorize(),
|
|
120
|
+
customFormat
|
|
121
|
+
);
|
|
122
|
+
|
|
96
123
|
consoleTransport = new transports.Console({
|
|
97
|
-
format:
|
|
98
|
-
? format.combine(
|
|
99
|
-
format.colorize(),
|
|
100
|
-
format.timestamp({
|
|
101
|
-
format: () => moment().format(timestampFormat)
|
|
102
|
-
}),
|
|
103
|
-
customFormat
|
|
104
|
-
)
|
|
105
|
-
: format.combine(
|
|
106
|
-
format.colorize(),
|
|
107
|
-
customFormat
|
|
108
|
-
)
|
|
124
|
+
format: consoleFormat
|
|
109
125
|
});
|
|
110
126
|
logger.add(consoleTransport);
|
|
111
127
|
}
|
|
112
128
|
|
|
113
|
-
// Enable file logging if options.files is provided
|
|
114
129
|
if (options.files) {
|
|
115
130
|
const folder = options.files.folder || 'logs';
|
|
116
131
|
const datePattern = options.files.filesName || 'YYYY-MM-DD';
|
|
@@ -118,17 +133,14 @@ function applySettings(options = {}) {
|
|
|
118
133
|
const maxSize = options.files.maxSize || '20m';
|
|
119
134
|
const zippedArchive = options.files.zippedArchive !== undefined ? options.files.zippedArchive : false;
|
|
120
135
|
|
|
121
|
-
// Ensure the log folder exists
|
|
122
136
|
if (!fs.existsSync(folder)) {
|
|
123
137
|
fs.mkdirSync(folder, { recursive: true });
|
|
124
138
|
}
|
|
125
139
|
|
|
126
|
-
// Remove existing file transport if it exists
|
|
127
140
|
if (fileTransport) {
|
|
128
141
|
logger.remove(fileTransport);
|
|
129
142
|
}
|
|
130
143
|
|
|
131
|
-
// Create a new daily-rotate file transport with provided/default settings
|
|
132
144
|
fileTransport = new transports.DailyRotateFile({
|
|
133
145
|
filename: `${folder}/application-%DATE%.log`,
|
|
134
146
|
datePattern,
|
|
@@ -136,7 +148,6 @@ function applySettings(options = {}) {
|
|
|
136
148
|
maxSize,
|
|
137
149
|
maxFiles
|
|
138
150
|
});
|
|
139
|
-
|
|
140
151
|
logger.add(fileTransport);
|
|
141
152
|
}
|
|
142
153
|
}
|
|
@@ -150,39 +161,23 @@ function log(message) {
|
|
|
150
161
|
logger.info(message);
|
|
151
162
|
}
|
|
152
163
|
|
|
153
|
-
/**
|
|
154
|
-
* Logs an error message.
|
|
155
|
-
* @param {string} message - The error message.
|
|
156
|
-
*/
|
|
157
164
|
log.error = function (message) {
|
|
158
165
|
logger.error(message);
|
|
159
166
|
};
|
|
160
167
|
|
|
161
|
-
/**
|
|
162
|
-
* Logs a warning message.
|
|
163
|
-
* @param {string} message - The warning message.
|
|
164
|
-
*/
|
|
165
168
|
log.warn = function (message) {
|
|
166
169
|
logger.warn(message);
|
|
167
170
|
};
|
|
168
171
|
|
|
169
|
-
/**
|
|
170
|
-
* Logs an informational message.
|
|
171
|
-
* @param {string} message - The informational message.
|
|
172
|
-
*/
|
|
173
172
|
log.info = function (message) {
|
|
174
173
|
logger.info(message);
|
|
175
174
|
};
|
|
176
175
|
|
|
177
|
-
/**
|
|
178
|
-
* Logs a debug message.
|
|
179
|
-
* @param {string} message - The debug message.
|
|
180
|
-
*/
|
|
181
176
|
log.debug = function (message) {
|
|
182
177
|
logger.debug(message);
|
|
183
178
|
};
|
|
184
179
|
|
|
185
|
-
// Expose the settings function for configuring both file logging and console output
|
|
180
|
+
// Expose the settings function for configuring both file logging and console output.
|
|
186
181
|
log.settings = applySettings;
|
|
187
182
|
|
|
188
183
|
module.exports = log;
|