dynamic-self-register-proxy 1.0.9 → 1.0.10
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/README.md +9 -0
- package/logger.js +69 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -461,6 +461,15 @@ const INTERNAL_PORT_END = 5000;
|
|
|
461
461
|
- **Négociation de contenu** : l'URL racine `/` retourne HTML pour les navigateurs, JSON pour les API
|
|
462
462
|
- **Health check automatique** : désenregistrement automatique des serveurs non répondants
|
|
463
463
|
|
|
464
|
+
## 📝 Logs et Débogage
|
|
465
|
+
|
|
466
|
+
Le serveur enregistre ses activités (requêtes, erreurs, enregistrements) dans un fichier de log persistant :
|
|
467
|
+
|
|
468
|
+
- **Windows** : `C:\var\log\proxy-server\server.log`
|
|
469
|
+
- **Linux/Mac** : `/var/log/proxy-server/server.log`
|
|
470
|
+
|
|
471
|
+
Le format des logs inclut la date, l'heure, le PID et le tag `[PROXY]`.
|
|
472
|
+
|
|
464
473
|
## Limitations
|
|
465
474
|
|
|
466
475
|
- Les routes sont stockées en mémoire (perdues au redémarrage du proxy)
|
package/logger.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
let currentPrefix = 'PROXY';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Log a message to a file at the root of the disk.
|
|
8
|
+
* @param {string} message The message to log
|
|
9
|
+
* @param {string} [prefix] Optional prefix to override
|
|
10
|
+
*/
|
|
11
|
+
function logToFile(message, prefix = '') {
|
|
12
|
+
const logDir = process.platform === 'win32'
|
|
13
|
+
? 'C:\\var\\log\\proxy-server'
|
|
14
|
+
: '/var/log/proxy-server';
|
|
15
|
+
const logFile = path.join(logDir, 'server.log');
|
|
16
|
+
const now = new Date().toLocaleString('fr-FR', {
|
|
17
|
+
year: 'numeric',
|
|
18
|
+
month: '2-digit',
|
|
19
|
+
day: '2-digit',
|
|
20
|
+
hour: '2-digit',
|
|
21
|
+
minute: '2-digit',
|
|
22
|
+
second: '2-digit',
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const effectivePrefix = prefix || currentPrefix;
|
|
26
|
+
const label = effectivePrefix ? ` [${effectivePrefix}]` : "";
|
|
27
|
+
const logEntry = `[${now}] [PID ${process.pid}]${label} ${message}\n`;
|
|
28
|
+
|
|
29
|
+
try {
|
|
30
|
+
if (!fs.existsSync(logDir)) {
|
|
31
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
32
|
+
}
|
|
33
|
+
fs.appendFileSync(logFile, logEntry);
|
|
34
|
+
} catch (error) {
|
|
35
|
+
// On ne log pas l'erreur de log ici pour éviter une boucle infinie
|
|
36
|
+
// mais on l'affiche sur la console
|
|
37
|
+
process.stderr.write(`Critical: Failed to write to log file: ${error.message}\n`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Override console methods to also log to file
|
|
43
|
+
* @param {string} [prefix] Prefix for this process
|
|
44
|
+
*/
|
|
45
|
+
function setupLogging(prefix = 'PROXY') {
|
|
46
|
+
currentPrefix = prefix;
|
|
47
|
+
const originalLog = console.log;
|
|
48
|
+
const originalError = console.error;
|
|
49
|
+
|
|
50
|
+
console.log = (...args) => {
|
|
51
|
+
const message = args.map(arg =>
|
|
52
|
+
typeof arg === 'object' ? JSON.stringify(arg, null, 2) : arg
|
|
53
|
+
).join(' ');
|
|
54
|
+
logToFile(message);
|
|
55
|
+
originalLog.apply(console, args);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
console.error = (...args) => {
|
|
59
|
+
const message = args.map(arg =>
|
|
60
|
+
typeof arg === 'object' ? JSON.stringify(arg, null, 2) : arg
|
|
61
|
+
).join(' ');
|
|
62
|
+
logToFile(`[ERROR] ${message}`);
|
|
63
|
+
originalError.apply(console, args);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
logToFile('--- Logging system initialized ---');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
module.exports = { logToFile, setupLogging };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dynamic-self-register-proxy",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"description": "Dynamic reverse proxy with self-registration API - applications can register themselves and receive an automatically assigned port",
|
|
5
5
|
"main": "proxy-client.js",
|
|
6
6
|
"bin": {
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"files": [
|
|
16
16
|
"proxy.js",
|
|
17
17
|
"proxy-client.js",
|
|
18
|
+
"logger.js",
|
|
18
19
|
"README.md",
|
|
19
20
|
"LICENSE"
|
|
20
21
|
],
|