zongji
zongji copied to clipboard
Do not event using Amazon RDS
Hello,
I have one Amazon RDS instace running mysql 5.7.11, and I tought is everything configured, so I used this example to read the log and nothing happens and I have for sure the binary log is being written.
var ZongJi = require('zongji');
var zongji = new ZongJi(
{
host : '*******',
user : '******',
password : '******',
// debug: true
});
// Each change to the replication log results in an event
zongji.on('binlog', function(evt) {
evt.dump();
});
zongji.on('error', function(err) {
console.log("ZongJi error event", err);
});
// Binlog must be started, optionally pass in filters
zongji.start({
includeEvents: ['tablemap', 'writerows', 'updaterows', 'deleterows']
});
process.on('SIGINT', function() {
console.log('Got SIGINT.');
zongji.stop();
process.exit();
});
The debug returned this:
<-- HandshakeInitializationPacket
HandshakeInitializationPacket {
protocolVersion: 10,
serverVersion: '5.7.11-log',
threadId: 178,
scrambleBuff1: <Buffer 2d 0c 0d 26 32 38 68 75>,
filler1: <Buffer 00>,
serverCapabilities1: 65535,
serverLanguage: 8,
serverStatus: 2,
serverCapabilities2: 49663,
scrambleLength: 21,
filler2: <Buffer 00 00 00 00 00 00 00 00 00 00>,
scrambleBuff2: <Buffer 21 0a 2b 15 5b 2a 1e 72 65 78 61 1e>,
filler3: <Buffer 00>,
pluginData: 'mysql_native_password',
protocol41: true }
--> ClientAuthenticationPacket
ClientAuthenticationPacket {
clientFlags: 455631,
maxPacketSize: 0,
charsetNumber: 33,
filler: undefined,
user: 'tracker',
scrambleBuff: <Buffer b6 f2 b3 32 a5 11 17 4c 28 e2 ed cc ad 92 05 8b d7 bc 87 3e>,
database: 'information_schema',
protocol41: true }
<-- OkPacket
OkPacket {
fieldCount: 0,
affectedRows: 0,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }
--> ComQueryPacket
ComQueryPacket {
command: 3,
sql: 'select @@GLOBAL.binlog_checksum as checksum' }
<-- ResultSetHeaderPacket
ResultSetHeaderPacket { fieldCount: 1, extra: undefined }
<-- FieldPacket
FieldPacket {
catalog: 'def',
db: '',
table: '',
orgTable: '',
name: 'checksum',
orgName: '',
charsetNr: 33,
length: 15,
type: 253,
flags: 0,
decimals: 31,
default: undefined,
zeroFill: false,
protocol41: true }
<-- EofPacket
EofPacket {
fieldCount: 254,
warningCount: 0,
serverStatus: 2,
protocol41: true }
<-- RowDataPacket
RowDataPacket { checksum: 'CRC32' }
<-- EofPacket
EofPacket {
fieldCount: 254,
warningCount: 0,
serverStatus: 2,
protocol41: true }
<-- HandshakeInitializationPacket
HandshakeInitializationPacket {
protocolVersion: 10,
serverVersion: '5.7.11-log',
threadId: 179,
scrambleBuff1: <Buffer 45 05 37 69 1c 73 3c 70>,
filler1: <Buffer 00>,
serverCapabilities1: 65535,
serverLanguage: 8,
serverStatus: 2,
serverCapabilities2: 49663,
scrambleLength: 21,
filler2: <Buffer 00 00 00 00 00 00 00 00 00 00>,
scrambleBuff2: <Buffer 1d 6b 1d 79 59 46 5a 16 10 1c 58 28>,
filler3: <Buffer 00>,
pluginData: 'mysql_native_password',
protocol41: true }
--> ClientAuthenticationPacket
ClientAuthenticationPacket {
clientFlags: 455631,
maxPacketSize: 0,
charsetNumber: 33,
filler: undefined,
user: 'tracker',
scrambleBuff: <Buffer 42 ae a8 43 5b 8e 18 8d f2 d0 df 6b 6e ee 6e 3d c8 a4 3f f5>,
database: undefined,
protocol41: true }
<-- OkPacket
OkPacket {
fieldCount: 0,
affectedRows: 0,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }
--> ComQueryPacket
ComQueryPacket {
command: 3,
sql: 'set @master_binlog_checksum=@@global.binlog_checksum' }
<-- OkPacket
OkPacket {
fieldCount: 0,
affectedRows: 0,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }
--> ComQueryPacket
ComQueryPacket { command: 3, sql: 'SHOW BINARY LOGS' }
<-- ResultSetHeaderPacket
ResultSetHeaderPacket { fieldCount: 2, extra: undefined }
<-- FieldPacket
FieldPacket {
catalog: 'def',
db: '',
table: '',
orgTable: '',
name: 'Log_name',
orgName: '',
charsetNr: 33,
length: 765,
type: 253,
flags: 1,
decimals: 31,
default: undefined,
zeroFill: false,
protocol41: true }
<-- FieldPacket
FieldPacket {
catalog: 'def',
db: '',
table: '',
orgTable: '',
name: 'File_size',
orgName: '',
charsetNr: 63,
length: 20,
type: 8,
flags: 161,
decimals: 0,
default: undefined,
zeroFill: false,
protocol41: true }
<-- EofPacket
EofPacket {
fieldCount: 254,
warningCount: 0,
serverStatus: 2,
protocol41: true }
<-- RowDataPacket
RowDataPacket { Log_name: 'mysql-bin-changelog.000290', File_size: 30632 }
<-- RowDataPacket
RowDataPacket { Log_name: 'mysql-bin-changelog.000291', File_size: 37237 }
<-- EofPacket
EofPacket {
fieldCount: 254,
warningCount: 0,
serverStatus: 2,
protocol41: true }
--> ComBinlog
ComBinlog { command: 18, position: 4, flags: 0, serverId: 1, filename: '' }
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
<-- BinlogHeader
BinlogHeader {}
Got SIGINT.
--> ComQueryPacket
ComQueryPacket { command: 3, sql: 'KILL 179' }
Experiencing the same issue here. Amazon RDS, mysql 5.6.10 - BinlogHeader is shown as an empty object.
<-- BinlogHeader BinlogHeader {}
Figured this out just now - set a debug statement at line 262 in index.js and verify that the value of eventName
is included in the this.options.includeEvents
array. If it is not, you need to add it to that array in your includeEvents
array that gets set in zongji.start()
, e.g. line 16 in example.js
In my case, I had to add the value 'query'
to my includeEvents
array in order to avoid having an empty BinlogHeader object returned. I wonder if this is unique to RDS mysql instances.
For getting events sych as writerows
, updaterows
etc you need to set the binlog_format
to ROWS
from the ParameterGroups
menu of the AWS RDS. Then you need to set the parameter group of your db instance to that parameter group. After restarting your db you will receive data related to these events too. Downside of this approach can be that size of the log will increase much faster as it will start to save row details to logs.