Tencent Server Web (TSW) ist eine Node.JS-Infrastruktur für Web-Front-End-Entwickler mit der ursprünglichen Absicht, die Effizienz der Problempositionierung zu verbessern, und bietet Färbungspaketerfassungen und holographische Protokollierung . TSW konzentriert sich auf die Funktionen der Betriebs- und Wartungsüberwachung des Geschäfts, die für Geschäftsszenarien von HTTP- und HTTPS -Protokollen geeignet sind, und kann nahtlos in vorhandene Anwendungen (KOA und Express) integriert werden.
TSW 2.0 basiert auf 1.0, ergänzt durch ein modernes Entwurfsmodell, das eine Menge Schläger in 1.0 entzieht und auch freundlicher für Containerisierung und Cloud -native ist. Erhalten Sie nicht-invasiven und kostengünstigen Zugang.
0 Eindringen | ?Holographischer Protokoll | ?Bitte, das Paket zu fangen |
|---|---|---|
| Funktionen werden über den zugrunde liegenden Hack -NodeJS -Code implementiert. In die ursprüngliche Geschäftsordnung 0 eindringen. | Das holographische logografische Protokoll auf Mikroskope, der gemäß der Anforderung Clustering geklüpft wurde und Entwicklern eine perfekte Live-Wiederherstellung bietet. | Der komplette Paketinhalt aller von der Serverseite nach außen gesendeten Anfragen kann gekrabbt werden und die Kommunikation mit dem Hintergrund ist nicht mehr zugänglich. |
npm install --save @tswjs/tsw
// yarn add @tswjs/tsw Die Konfigurationsdatei ist eine Konfigurationsdatei, die in die Laufzeit geladen wird, wenn TSW gestartet wird, und deklariert hauptsächlich eine Liste der zu verwendenden Plug-Ins. Standardmäßig wird die Datei tswconfig.js im Stammverzeichnis des Projekts geladen und der Konfigurationsdateipfad kann manuell angegeben werden, indem Parameter -c oder --config werden.
Hinweis : Es gibt keine Logik in Bezug auf die Integration der offenen Plattform in 2.0, wird jedoch in ein Plug-In eingekapselt, damit Benutzer bei Bedarf verwenden können. Weitere Informationen finden Sie im Kapitel Plug-in-Kapitel.
Beispiel für Konfigurationsdatei:
module . exports = {
plugins : [
new MyPlugin ( { } )
]
}Parameterliste :
| Name | Typ | Standard | Optional | Beschreibung |
|---|---|---|---|---|
| Plugins | Array <Plugin> | - - | Ja | Pluginliste |
| Cleanlog | boolean | false | Ja | Ob der Standarddruck ausschalten soll |
| Loglevel | DEBUG/INFO/WARN/ERROR | DEBUG | Ja | Legen Sie die Protokollebene fest |
| Winstontransports | Array <transportstream> | - - | Ja | Winston Log Channel |
npx @tswjs/tsw ./index.js Hinweis : NODE_OPTIONS ursprünglichen CLI-Parameter im node --inspect ./index.js , wie --inspect NODE_OPTIONS="--inspect" npx @tswjs/tsw ./index.js
Verwenden Sie TS : Wenn Sie sicherstellen, dass das Projekt über ein TS-Knoten-Abhängigkeitspaket verfügt, kann die TS-Datei direkt wie folgt geladen werden.
NODE_OPTIONS= " --require=ts-node/register " npx @tswjs/tsw ./index.ts Verwenden Sie npx @tswjs/tsw --help , um die CLI -Option zu erhalten.
Wir bieten einige Beispielprojekte an, um das Projekt so schnell wie möglich kennenzulernen.
cd ~git clone https://github.com/Tencent/TSW.gitcd TSWcd examples/koayarnyarn serve oder npm run servecurl -v localhost:4443/path/to/foo -X POST -d "hello, server" Die Kern -Implementierungsmethode von TSW ist die eigene http.request und http.createServer von Hack NodeJS, um den Paketerfassungsmechanismus zu implementieren. Vor und nach dem Verarbeitung des Servers die Anforderung, bevor und nachdem der Server Pakete an andere Server usw. gesendet hat, werden entsprechende Ereignisse für Benutzer zur Anpassung der Verarbeitung geworfen. Um es den Benutzern bequemer zu machen, solche Gruppen der maßgeschneiderten Verarbeitung wiederzuverwenden und zu verbreiten, haben wir sie abstrahiert und einen Plug-in-Mechanismus gebildet.
export . modules = class MyPlugin ( ) {
constructor ( ) {
this . name = "MyPlugin"
}
async init ( eventBus , config ) {
eventBus . on ( "RESPONSE_CLOSE" , ( payload ) => {
console . log ( payload ) ;
} )
}
} init -Methode ist erforderlich. Diese Methode wird zu Beginn der Synchron- oder Asynchronlast aufgerufen.
eventBus eventBus wird über new EventEmitter() erhalten. Der TSW -Kern löst die oben genannten Ereignisse in verschiedenen kritischen Momenten aus.
| Schlüssel | Bedeutung (Trigger -Timing) | Nutzlast |
|---|---|---|
DNS_LOOKUP_SUCCESS | Ausgelöst nach jeder DNS -Abfrage ist erfolgreich | string | dns.LookupAddress[] |
DNS_LOOKUP_ERROR | Nach jedem DNS -Abfrageausfall ausgelöst | NodeJS.ErrorException |
RESPONSE_START | Jedes Mal ausgelöst, wenn der Server eine Antwort zurückgibt ( writeHead ausführen) | ResponseEventPayload |
RESPONSE_FINISH | Am Ende der Antwort ausgelöst ( res.on("finish") ) | ResponseEventPayload |
RESPONSE_CLOSE | Ausgelöst, wenn die zugrunde liegende Verbindung geschlossen ist ( res.on("close") ) | ResponseEventPayload |
REQUEST_START | Jedes Mal ausgelöst, wenn der Server eine neue Anfrage erhält | RequestEventPayload |
Standardmäßig kriecht TSW nur alle Protokolle und Paketaufnahmen und sendet sie an den Eventbus, um einen Plug-in-Verbrauch zu erhalten. Daher müssen Benutzer im Allgemeinen die Implementierung von Protokoll- und Paketaufnahmen-Inhalten im Allgemeinen dazu veranlassen, Plug-Ins zu schreiben und für sich selbst Speicher zu bieten, was zu teuer ist.
Daher bietet TSW offiziell eine öffentliche Serviceplattform https://tswjs.org an, mit der Benutzer TSW zu kostengünstigem, schnelleren und bequemeren Niveau verwenden können. Weitere Informationen finden Sie in den Open -Plattform -Nutzungsrichtlinien.
TSW 2.0 wurde angesichts von Containerisierung und Wolkengebauigkeit entwickelt, sodass es keine integrierten Cluster-Funktionen gibt. Es wird empfohlen, die Behälter -Gesundheitsprüfungen direkt zu verwenden, um den Verlust -Start- und Fehler -Neustart -Mechanismus des Dienstes durchzuführen. Für Szenarien, in denen Containerisierungsschemata nicht verwendet werden, empfehlen wir, PM2 ähnliche Tools zur Implementierung des Mehrprozess-Modus zu verwenden.
// ecosystem.config.json
{
"apps" : [
{
"name" : "app-name" ,
"script" : "built/index.js" ,
"interpreter" : "node" ,
"interpreter_args" : "./node_modules/@tswjs/tsw/dist/cli.js" ,
// other options
}
]
} // package.json
{
...
"scripts" : {
"start" : "pm2 start ecosystem.config.json"
} ,
...
} winston ist ein universelles und leichtes Protokollpaket. winston unterstützt mehrere Protokollkanäle und kann die Protokollprioritäten separat definieren. Zusätzlich zu den drei integrierten Protokollübertragungskanälen Console , File und HTTP werden einige Übertragungsmodule außerdem außerhalb des Winston-Projekts gewartet. Schauen Sie sich die offizielle Dokumentation winston an.
TSW 2.0 unterstützt Protokollinformationen mit winston Transmission Channel. Benutzer können die Konfigurationsdatei winston.transports Instanzen hinzufügen, und die Protokolle fallen in die entsprechende Konfiguration.
Verwenden Sie winston , um Protokollinformationen unterhalb error Fehlerebene und debug -Ebene in der entsprechenden Datei aufzuzeichnen. Die aktuelle config ist wie folgt konfiguriert:
module . exports = {
winstonTransports : [
new winston . transports . File ( { filename : 'error.log' , level : 'error' } ) ,
new winston . transports . File ( { filename : 'debug.log' , level : 'debug' } )
]
}Protokollierung




























Das Open -Source -Protokoll des Tencent Server -Webs ist MIT, siehe Lizenz für Details.