前面提到,在zookeeper server的配置文件zoo.cfg中可以通过dataLogDir来配置zookeeper的事务日志的输出目录,这个事务日志类似于下面这样的文件:
这个文件是一个二进制文件, 一般不能够直接识别, 那么是否有方法可以把这些事务日志转换成正常日志文件呢, 答案是肯定的~
Zookeeper自带一个工具类:org.apache.zookeeper.server.LogFormatter, 使用这个类可以对zookeeper的事务日志进行格式化查看, 方法如下: java LogFormatter D:\zookeeper-3.4.3\zk_data\version-2\log.48
大家可以自行下载本文的附件进行尝试, 通过这种方法,我们就可以看到类似于下面这样清晰的事务日志了~
- ZooKeeper Transactional Log File with dbid 0 txnlog format version 2
- 7/17/12 11:58:04 AM CST session 0x13893084e900000 cxid 0x0 zxid 0x48 createSession 30000
- 7/17/12 12:00:57 PM CST session 0x13893084e900001 cxid 0x0 zxid 0x49 createSession 30000
- 7/17/12 12:01:24 PM CST session 0x13893084e900000 cxid 0x0 zxid 0x4a closeSession null
- 7/17/12 12:01:55 PM CST session 0x13893084e900001 cxid 0xc zxid 0x4b create '/test-abc,#61,v{s{31,s{'world,'anyone}}},F,3
- 7/17/12 12:02:21 PM CST session 0x13893084e900001 cxid 0x12 zxid 0x4c setData '/test-abc,#61,1
- 7/17/12 12:03:15 PM CST session 0x13893084e900001 cxid 0x14 zxid 0x4d create '/test-abc/abc,#61,v{s{31,s{'world,'anyone}}},F,1
- 7/17/12 12:03:17 PM CST session 0x13893084e900001 cxid 0x15 zxid 0x4e setData '/test-abc,#61,2
- EOF reached after 7 txns.