ZooKeeper使用SLF4J(the Simple Logging Facade for Java)作为日志的抽象层,默认使用Log4J来做实际的日志工作。使用2层日志抽象看起来真是够呛,这里简要的说明如何来配置Log4J。尽管Log4J非常灵活且强大,但它也有一些复杂,可以用一整本书来描述它,这里只是简要的介绍一下基本的用法。
Log4J的配置文件名为log4j.properties,从classpath中查找。如果没有找到log4j.properties文件,会输出如下警告信息:
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.serv ... log4j:WARN Please initialize the log4j system properly.
它说的是所有后续的日志消息会被丢弃,通常log4j.properties文件会放在conf文件夹,并放在classpath下。
来看看ZooKeeper使用的log4j.properties的主要部分:
zookeeper.root.logger=INFO, CONSOLE (1) zookeeper.console.threshold=INFO zookeeper.log.dir=. zookeeper.log.file=zookeeper.log zookeeper.log.threshold=DEBUG zookeeper.tracelog.dir=. zookeeper.tracelog.file=zookeeper_trace.log log4j.rootLogger=${zookeeper.root.logger} (2) log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender (3) log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold} (4) log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout (5) log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - ... log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender (6) log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold} (7) log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file} log4j.appender.ROLLINGFILE.MaxFileSize=10MB log4j.appender.ROLLINGFILE.MaxBackupIndex=10 log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - ...
(1) 第一组设置以zookeeper开头,它们实际上是Java system property,可以被-D形式的命令行参数覆盖。第一行配置了日志级别,默认的设置是说在INFO级别以下的日志会被丢弃,并且日志会使用CONSOLE appender输出。你可以指定多个appender,例如如果你想使用CONSOLE appender和ROLLINGFILE appender输出日志,那么可以配置zookeeper.logger为INFO,CONSOLE,ROLLINGFILE。
(2) rootLogger处理所有日志的logger,因为我们没有定义其他logger。
(3) 这一行把CONSOLE appender和实际上处理日志输出的类绑定在一起,这里是ConsoleAppender类。
(4) appender也可以过滤日志。这一行将过滤任何在INFO级别之下的日志,因为这是在zookeeper.root.logger设置的threshold。
(5) appender使用一个布局(layout)类在输出前对日志进行格式化。我们使用pattern layout来记录日志的级别,日期,线程信息和调用位置信息以及消息本身。
(6) RollingFileAppender实现了rolling日志文件的功能,而不是持续的写到一个单独的文件或者控制台。如果rootLogger没有关联ROLLINGFILE,则此appender会被忽略。
(7) ROLLINGFILE的threshold设置成DEBUG。因为rootLogger过滤了所有在INFO级别之下的日志,没有DEBUG日志会输出到ROLLINGFILE。如果你想要看到DEBUG日志,你必须把zookeeper.root.logger从INFO改成DEBUG。
打日志会影响到进程的性能,尤其是在DEBUG级别下。同时日志会提供有价值的信息为诊断错误提供线索。一个平衡性能开销的有效方式是把appender的threshold设成DEBUG,并把rootLogger设成WARN级别,这在一般的情况都适用,一般只需要关注WARNING和它之上的日志。当你需要诊断问题时可以使用JMX动态设置为INFO或DEBUG级别,这样可以更方便定位问题。
相关推荐
- **配置管理**:Zookeeper 提供了一种中心化的配置管理方式,可以集中管理和分发应用的配置,使集群中的所有节点共享相同的配置信息。 - **名字服务**:Zookeeper 可以作为分布式系统中的命名服务,帮助客户端找到...
#使用说明:“look_Log”目录里面日志需要的jar也都放好了,你如果jdk安装好了并配置了window环境变量的,直接运行“look_Log/looklog.bat”然后入日志路径(包含文件名称:例如“version-2/log.1”)
2. **端口冲突**:如果8080端口被其他服务占用(如Tomcat),需要修改Zookeeper配置文件`zoo.cfg`中的`admin.serverPort`,设置为未使用的端口号。 3. **启动失败**:可能由于下载了源码包而非可执行文件包导致。...
解压下载的压缩包,例如 `zookeeper-3.x.x.tar.gz`,到指定目录,例如 `/opt`,然后创建数据目录,比如 `/var/lib/zookeeper` 和日志目录 `/var/log/zookeeper`。 接下来是配置 Zookeeper。打开解压后的 `conf/zoo....
ZooKeeper 集群安装配置 ZooKeeper 是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护...
在Linux集群环境中搭建Zookeeper集群是一个涉及到多台服务器间协调工作的复杂过程,需要对Zookeeper的工作原理和配置有深入的了解。本篇详细阐述了从下载安装到集群配置的全过程。 首先,Zookeeper集群部署的前提...
Zookeeper集群是一个分布式协调服务,常用于管理大型分布式系统中的命名空间、配置管理、领导者选举等任务。在本文中,我们将深入探讨如何搭建一个由三个节点组成的Zookeeper集群,并了解其配置过程。 首先,...
学习Zookeeper的操作和命令,可以使用Zookeeper提供的命令行工具`bin/zkCli.sh`。常用命令包括: 1. `ls /`:列出根目录下的节点。 2. `create /test "Hello, Zookeeper!"`:创建一个新的节点。 3. `get /test`:...
压缩包"zookeeper配置文件.zip"包含了四个配置文件:zoo4.cfg、zoo3.cfg、zoo1.cfg和zoo2.cfg,这些文件可能分别对应于一个Zookeeper集群中的四个节点。每个节点的配置文件都需要根据其角色和环境进行定制。 配置...
6. `dfs.client.failover.proxy.provider.mycluster`: 配置客户端使用的Failover Proxy Provider类。 接下来,配置Zookeeper 3.4.6以支持Hadoop HA。Zookeeper用于监控NameNode的状态,并在活性NameNode故障时协助...
### Zookeeper配置详解 Zookeeper是一款分布式的、开放源码的协调服务,它为分布式应用提供一致性服务。在分布式环境中,Zookeeper可以帮助解决各种复杂的分布式问题,如:配置管理、命名服务、集群管理等。本篇...
Zookeeper的设计目标之一就是易于使用,通过类似于文件系统的目录树结构来组织数据。 #### Zookeeper的关键特性: - **一致性**:对于所有成功的写操作,在所有服务器上的结果是一致的。 - **原子性**:所有的写...
提供的文档`hadoop_zookeeper_hbase集群配置.docx`应包含详细的步骤和配置示例,而`配置文件.rar`则可能包含了预设的配置模板,可以作为配置参考。在实际操作时,务必根据具体环境调整配置,确保所有节点之间的网络...
服务器配置包括 ZooKeeper 服务器的数据目录、日志目录、服务器列表等。 ### 1.4.3 实验任务三:启动 ZooKeeper 启动 ZooKeeper 需要在 Master 节点和 Slave 节点上执行以下命令: ``` [root@master ~] # zk...
在本场景中,我们将详细探讨如何在单个Linux系统上配置ZooKeeper 3.5.3-beta集群,端口范围从2181到2185。 首先,理解ZooKeeper集群的基本概念。一个ZooKeeper集群由多个服务器组成,每个服务器都运行着ZooKeeper...
3. **监控与日志**:定期查看Kafka和Zookeeper的日志,设置合理的性能监控,以便及时发现并解决问题。 总结来说,Kafka集群与Zookeeper集群的整合配置是一项关键的任务,它涉及到多个层面的设置和调整。只有正确...
例如,配置信息、地址列表、系统日志管理、全局变量如消息中间件的offset等。 - **分布式通知/协调**:利用Watcher机制,系统间可以注册监听同一Znode,当Znode发生变化时,其他系统能收到通知并作出响应,实现数据...
- `dataDir`:指定Zookeeper保存数据的目录,用于存储快照和事务日志。 - `clientPort`:客户端连接Zookeeper服务器的端口号,默认是2181。 - `tickTime`:Zookeeper的基本时间单位,用于心跳检测和其他内部定时任务...
2. **Zookeeper配置**: - **启动Zookeeper集群**:在每个节点上,配置`zoo.cfg`文件,设置dataDir指向存储快照和事务日志的目录,server.x配置项表示节点ID(x为1,2,3...),并指定其他节点的IP和端口。例如: ``...