第 5 章 日志分析
mycat 的日志文件配置为 MYCAT_HOME/conf/log4j.xml
,结构为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM-dd HH:mm:ss.SSS} %5p [%t] (%F:%L) -%m%n" />
</layout>
</appender>
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${MYCAT_HOME}/logs/mycat.log" />
<param name="Append" value="false"/>
<param name="MaxFileSize" value="10000KB"/>
<param name="MaxBackupIndex" value="10"/>
<param name="encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM/dd HH:mm:ss.SSS} %5p [%t] (%F:%L) -%m%n" />
</layout>
</appender>
<root>
<level value="debug" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4j:configuration>
日志配置是标准的 log4j 配置,其中:
<param name="file" value="${MYCAT_HOME}/logs/mycat.log" />
是日志文件的存放目录。
<root>
<level value="debug" />
<appender-ref ref="ConsoleAppender" />
</root>
是日志的级别,生成环境下建议将级别调整为 info/ware,如果是研究测试,特别是碰到异常可以通过开启debug 模式观察日志的信息查找异常原因。
5.1 warpper 日志:
目前 Mycat 的启动是经过 warapper 封装成启动脚本,所以日志也会有其相关的日志文件:${MYCAT_HOME}/logs/warapper.log
,再启动时候如果系统环境配置错误或缺少配置时,导致 Mycat 无法启动,可以通过查看 warrpper.log 查看具体错误原因。
正常启动状态的 warpper 日志为:
STATUS | wrapper | 2015/04/12 15:05:00 | --> Wrapper Started as Daemon
STATUS | wrapper | 2015/04/12 15:05:00 | Launching a JVM...
INFO | jvm 1 | 2015/04/12 15:05:01 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2015/04/12 15:05:01 | Copyright 1999-2006 Tanuki Software, Inc. AllRights Reserved.
INFO | jvm 1 | 2015/04/12 15:05:01 |
INFO | jvm 1 | 2015/04/12 15:05:01 | log4j 2015-04-12 15:05:01 [./conf/log4j.xml]load completed.
INFO | jvm 1 | 2015/04/12 15:05:02 | MyCAT Server startup successfully. see logs in logs/mycat.log
如果启动异常会有对应的异常信息,比如:
STATUS | wrapper | 2015/02/14 01:43:44 | --> Wrapper Started as Daemon
STATUS | wrapper | 2015/02/14 01:43:44 | Launching a JVM...
INFO | jvm 1 | 2015/02/14 01:43:45 | Error: Exception thrown by the agent : java.rmi.server.ExportException:
Port already in use: 1984; nested exception is:
INFO | jvm 1 | 2015/02/14 01:43:45 | java.net.BindException: Address already in use
ERROR | wrapper | 2015/02/14 01:43:45 | JVM exited while loading the application.
日志显示异常原因为 java.net.BindException: Address already in use
,也就是端口占用,很有可能是原有服务未停止,或者 Mycat 默认端口被其他程序占用,正常启动成功后会有 mycat.log 日志,如果服务未启动成功不会有对应的日志。 也可以去修改 conf 文件夹里的 wrapper.conf
里的 wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
,server.xml
的<property name="serverPort">8066</property>和<property name="managerPort">9066</property>
,这方法适合一台机器上两个 mycat 或者 1984,8066,9066 端口被其它应用占用的情况。
5.2 mycat 日志
下面看一下 info 级别小成功启动的日志。
04-29 21:46:59.121 INFO [main] (PhysicalDBPool.java:81) -total resouces of dataHost jdbchost is :4
04-29 21:46:59.126 INFO [main] (PhysicalDBPool.java:81) -total resouces of dataHost jdbchost2 is :4
04-29 21:46:59.143 INFO [mai