@@ -13,6 +13,7 @@ import data from '../util/data';
13
13
import JSZip from 'jszip' ;
14
14
import fs from 'fs' ;
15
15
import * as zhc from 'zigbee-herdsman-converters' ;
16
+ import winston from 'winston' ;
16
17
17
18
const requestRegex = new RegExp ( `${ settings . get ( ) . mqtt . base_topic } /bridge/request/(.*)` ) ;
18
19
@@ -28,6 +29,8 @@ export default class Bridge extends Extension {
28
29
private coordinatorVersion : zh . CoordinatorVersion ;
29
30
private restartRequired = false ;
30
31
private lastJoinedDeviceIeeeAddr : string ;
32
+ private lastBridgeLoggingPayload : string ;
33
+ private logTransport : winston . transport ;
31
34
private requestLookup : { [ key : string ] : ( message : KeyValue | string ) => Promise < MQTTResponse > } ;
32
35
33
36
override async start ( ) : Promise < void > {
@@ -59,15 +62,23 @@ export default class Bridge extends Extension {
59
62
} ;
60
63
61
64
const mqtt = this . mqtt ;
65
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
66
+ const self = this ;
62
67
class EventTransport extends Transport {
63
- log ( info : { message : string , level : string } , callback : ( ) => void ) : void {
64
- const payload = stringify ( { message : info . message , level : info . level } ) ;
65
- mqtt . publish ( `bridge/logging` , payload , { } , settings . get ( ) . mqtt . base_topic , true ) ;
66
- callback ( ) ;
68
+ log ( info : { message : string , level : string } , next : ( ) => void ) : void {
69
+ if ( info . level !== 'debug' ) {
70
+ const payload = stringify ( { message : info . message , level : info . level } ) ;
71
+ if ( payload !== self . lastBridgeLoggingPayload ) {
72
+ self . lastBridgeLoggingPayload = payload ;
73
+ mqtt . publish ( `bridge/logging` , payload , { } , settings . get ( ) . mqtt . base_topic , true ) ;
74
+ }
75
+ }
76
+ next ( ) ;
67
77
}
68
78
}
69
79
70
- logger . addTransport ( new EventTransport ( ) ) ;
80
+ this . logTransport = new EventTransport ( ) ;
81
+ logger . addTransport ( this . logTransport ) ;
71
82
72
83
this . zigbee2mqttVersion = await utils . getZigbee2MQTTVersion ( ) ;
73
84
this . zigbeeHerdsmanVersion = await utils . getDependencyVersion ( 'zigbee-herdsman' ) ;
@@ -118,6 +129,11 @@ export default class Bridge extends Extension {
118
129
this . eventBus . onMQTTMessage ( this , this . onMQTTMessage ) ;
119
130
}
120
131
132
+ override async stop ( ) : Promise < void > {
133
+ super . stop ( ) ;
134
+ logger . removeTransport ( this . logTransport ) ;
135
+ }
136
+
121
137
@bind async onMQTTMessage ( data : eventdata . MQTTMessage ) : Promise < void > {
122
138
const match = data . topic . match ( requestRegex ) ;
123
139
const key = match ?. [ 1 ] ?. toLowerCase ( ) ;
0 commit comments