转载请注明:@ni掌柜 nileader@gmail.com 

      前面提到,在zookeeper server的配置文件zoo.cfg中可以通过dataLogDir来配置zookeeper的事务日志的输出目录,这个事务日志类似于下面这样的文件:

zookeeper 事务日志

这个文件是一个二进制文件, 一般不能够直接识别, 那么是否有方法可以把这些事务日志转换成正常日志文件呢, 答案是肯定的~ 
      Zookeeper自带一个工具类:org.apache.zookeeper.server.LogFormatter, 使用这个类可以对zookeeper的事务日志进行格式化查看, 方法如下java LogFormatter D:\zookeeper-3.4.3\zk_data\version-2\log.48

     大家可以自行下载本文的附件进行尝试, 通过这种方法,我们就可以看到类似于下面这样清晰的事务日志了~

  1. ZooKeeper Transactional Log File with dbid 0 txnlog format version 2 
  2. 7/17/12 11:58:04 AM CST session 0x13893084e900000 cxid 0x0 zxid 0x48 createSession 30000 
  3.  
  4. 7/17/12 12:00:57 PM CST session 0x13893084e900001 cxid 0x0 zxid 0x49 createSession 30000 
  5.  
  6. 7/17/12 12:01:24 PM CST session 0x13893084e900000 cxid 0x0 zxid 0x4a closeSession null 
  7. 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 
  8.  
  9. 7/17/12 12:02:21 PM CST session 0x13893084e900001 cxid 0x12 zxid 0x4c setData '/test-abc,#61,1 
  10.  
  11. 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 
  12.  
  13. 7/17/12 12:03:17 PM CST session 0x13893084e900001 cxid 0x15 zxid 0x4e setData '/test-abc,#61,2 
  14.  
  15.  
  1. EOF reached after 7 txns. 
  1.  
  1.