NEWS
[Gelöst] Adapter mit aktiven Log Transporter
-
Hi,
ich bin grade dabei mir ein kleinen Adapter zu Bauen mit dem ich die ioBroker Logs ins Seq pumpen kann.
Und habe mir auch schon die Hilfe zu Log Transporter durchgelesen, aber komme nun nicht weiter.Der Adapter ist nach den aktuellen Template erstellt und nun habe ich das Problem das ich das
requireLog(true)
nicht wie erwartet setzten kann ....
class Seq extends utils.Adapter { constructor(options) { super({ ...options, name: 'seq', }); this.requireLog(true); this.on('ready', this.onReady.bind(this)); this.on('unload', this.onUnload.bind(this)); this.on('log', this.onLog.bind(this)); } .............
Hat da wer ein Tip für mich?
-
@IdleBit sagte in Adapter mit aktiven Log Transporter:
nicht wie erwartet setzten kann ....
Was heisst das genau? Bekommst Du einen Fehler oder was ist?
-
@apollon77 said in Adapter mit aktiven Log Transporter:
Was heisst das genau? Bekommst Du einen Fehler oder was ist?
TypeError: this.requireLog is not a function
seq.0 2020-09-05 14:14:40.717 warn (20750) Terminated (UNCAUGHT_EXCEPTION): Without reason seq.0 2020-09-05 14:14:40.298 info (20750) starting. Version 0.0.1 in /opt/iobroker/node_modules/iobroker.seq, node: v12.18.3, js-controller: 3.1.6 host.iobroker 2020-09-05 14:14:39.287 info instance system.adapter.seq.0 started with pid 20750 host.iobroker 2020-09-05 14:14:09.241 info Restart adapter system.adapter.seq.0 because enabled host.iobroker 2020-09-05 14:14:09.241 error instance system.adapter.seq.0 terminated with code 6 (UNCAUGHT_EXCEPTION) seq.0 2020-09-05 14:14:08.704 warn (20731) Terminated (UNCAUGHT_EXCEPTION): Without reason seq.0 2020-09-05 14:14:08.156 info (20731) starting. Version 0.0.1 in /opt/iobroker/node_modules/iobroker.seq, node: v12.18.3, js-controller: 3.1.6 seq.0 2020-09-05 14:14:07.700 error at internal/main/run_main_module.js:17:47 seq.0 2020-09-05 14:14:07.700 error at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) seq.0 2020-09-05 14:14:07.700 error at Function.Module._load (internal/modules/cjs/loader.js:878:14) seq.0 2020-09-05 14:14:07.700 error at Module.load (internal/modules/cjs/loader.js:985:32) seq.0 2020-09-05 14:14:07.700 error at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10) seq.0 2020-09-05 14:14:07.700 error at Module._compile (internal/modules/cjs/loader.js:1137:30) seq.0 2020-09-05 14:14:07.700 error at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.seq/main.js:122:5) seq.0 2020-09-05 14:14:07.700 error at new Seq (/opt/iobroker/node_modules/iobroker.seq/main.js:22:14) seq.0 2020-09-05 14:14:07.700 error (20731) TypeError: this.requireLog is not a function seq.0 2020-09-05 14:14:07.699 error (20731) uncaught exception: this.requireLog is not a function host.iobroker 2020-09-05 14:14:07.275 info instance system.adapter.seq.0 started with pid 20731 host.iobroker 2020-09-05 14:13:37.249 info Restart adapter system.adapter.seq.0 because enabled host.iobroker 2020-09-05 14:13:37.249 error instance system.adapter.seq.0 terminated with code 6 (UNCAUGHT_EXCEPTION)
-
@IdleBit Ist das korrekt?
To activate in your adapter, add "logTransporter": true to the common structure of your io-package.json.
wenn ja hast Du nach dem einbau davon einmal "iobroker upload meinadaptername" gemacht?
Die Funktion wird nur definiert wenn es auch in der io-package korrekr steht
-
@IdleBit
Kannst dir mal https://github.com/Mic-M/ioBroker.logparser ansehen, dort habe ich den Log Transporter umgesetzt.
In io-package.json
Und hier in der main.js: function subscribeToAdapterLogs()
-
@IdleBit sagte in Adapter mit aktiven Log Transporter:
ich bin grade dabei mir ein kleinen Adapter zu Bauen mit dem ich die ioBroker Logs ins Seq pumpen kann.
BTW, sehr interessantes Vorhaben von dir
Sag Bescheid, falls sich da ggf. Synergien zum Log Parser Adapter ergeben. -
@apollon77 said in Adapter mit aktiven Log Transporter:
wenn ja hast Du nach dem einbau davon einmal "iobroker upload meinadaptername" gemacht?
Die Funktion wird nur definiert wenn es auch in der io-package korrekr stehtJa das habe ich beides so gemacht.
@Mic said in Adapter mit aktiven Log Transporter:
@IdleBit
Kannst dir mal https://github.com/Mic-M/ioBroker.logparser ansehen, dort habe ich den Log Transporter umgesetzt.Hehe, hatte ich schon längste bei dir abgeschaut
-
Ich habe das mal als Script umgesetzt, das würde eingleich reichen.
Allerdings würde ich es doch am liebsten als Adapter umsetzten.const seq = require('seq-logging'); const logger = new seq.Logger({serverUrl: 'http://192.168.0.251:5000'}); onLog('silly', data => { const message = ExtractMessage (data.message); SeqLog('Verbose', data.from, message) }); onLog('debug', data => { const message = ExtractMessage (data.message); SeqLog('Debug', data.from, message) }); onLog('info', data => { const message = ExtractMessage (data.message); SeqLog('Information', data.from, message) }); onLog('warn', data => { const message = ExtractMessage (data.message); SeqLog('Warning', data.from, message) }); onLog('error', data => { const message = ExtractMessage (data.message); SeqLog('Error', data.from, message) }); function SeqLog(logLevel, source, message) { logger.emit({ timestamp: message.timestamp, level: logLevel, messageTemplate: '{Source}: ' + message, properties: { Application: 'ioBroker', Source: source } }); } function ExtractMessage (inMessage) { const index = Object.values(IndexesOf(inMessage, / /g))[0][1]; const message = inMessage.substring(index); return message; } function IndexesOf(string, regex) { let match, indexes = {}; regex = new RegExp(regex); while (match = regex.exec(string)) { if (!indexes[match[0]]) indexes[match[0]] = []; indexes[match[0]].push(match.index); } return indexes; }
Hier mal eine Ausgabe von den Warn, Error und Info Events in Seq
-
Hast du geprüft, dass
"logTransporter": true
im korrekten Zweig der io-package.json ist?Seq sieht sehr interessant aus, hab ich noch nicht gekannt. Wozu nutzt du es denn sonst noch so?
-
@Mic sagte in Adapter mit aktiven Log Transporter:
Hast du geprüft, dass
"logTransporter": true
im korrekten Zweig der io-package.json ist?Ja ich bin der Meinung:
https://github.com/o0shojo0o/ioBroker.seq/blob/master/io-package.json#L53@Mic sagte in Adapter mit aktiven Log Transporter:
@IdleBit
Seq sieht sehr interessant aus, hab ich noch nicht gekannt. Wozu nutzt du es denn sonst noch so?Seq setzte ich soweit es geht für alles ein was Logs schmeißt
Auf jeden Fall für alle meine selbst geschrieben Programme, denn so ein Programm übergreifendes Log ein einfach ein feuchter Traum!
-
@IdleBit sagte in Adapter mit aktiven Log Transporter:
Ja ich bin der Meinung:
https://github.com/o0shojo0o/ioBroker.seq/blob/master/io-package.json#L53Sieht gut aus.
In deiner main.js:
Du hastthis.requireLog(true)
im constructor der Adapter-Klasse, schieb das mal in dieonReady()
-Funktion, dort als erste Zeile. -
@IdleBit sagte in Adapter mit aktiven Log Transporter:
Seq setzte ich soweit es geht für alles ein was Logs schmeißt
Auf jeden Fall für alle meine selbst geschrieben Programme, denn so ein Programm übergreifendes Log ein einfach ein feuchter Traum!
Cool. Wohl auch als Developer sehr sinnvoll, oder? Muss ich mir echt mal näher ansehen.
Nachtrag:
Hmm, aber da braucht unter Linux Docker, oder? Also nicht einfach zu installieren auf einer Linux-Instanz (z.B. Proxmox VM / Container)? -
@Mic sagte in Adapter mit aktiven Log Transporter:
Nachtrag:
Hmm, aber da braucht unter Linux Docker, oder? Also nicht einfach zu installieren auf einer Linux-Instanz (z.B. Proxmox VM / Container)?Tatsächlich nutze ich @work einen Windows Server und @ home/RootServer Docker unter Linux
-
So Problem behoben nochmals Danke @Dutchman für den kleinen Exkurs
Das this.requireLog(true); gehört in der onReady() Funktion. -
@Mic sagte in [Gelöst] Adapter mit aktiven Log Transporter:
@IdleBit sagte in Adapter mit aktiven Log Transporter:
Ja ich bin der Meinung:
https://github.com/o0shojo0o/ioBroker.seq/blob/master/io-package.json#L53Sieht gut aus.
In deiner main.js:
Du hastthis.requireLog(true)
im constructor der Adapter-Klasse, schieb das mal in dieonReady()
-Funktion, dort als erste Zeile.Och nöööööö, das habe ich ja total überlesen.... da war ja schon die Lösung!
-
@IdleBit sagte in [Gelöst] Adapter mit aktiven Log Transporter:
So Problem behoben nochmals Danke @Dutchman für den kleinen Exkurs
Das this.requireLog(true); gehört in der onReady() Funktion.und direkt Debugger gelernt
@IdleBit sagte in [Gelöst] Adapter mit aktiven Log Transporter:
Och nöööööö, das habe ich ja total überlesen.... da war ja schon die Lösung!
-
@IdleBit sagte in [Gelöst] Adapter mit aktiven Log Transporter:
Das this.requireLog(true); gehört in der onReady() Funktion.
exakt!