打开JDK及其他底层API日志接口,诊断程序问题

#Java/JMX 遇到一个问题,使用JMX 连接Tomcat,连接的IP是10.1.0.?,在创建连接的时候,会抛出网络连接超时的Exception,迷茫的是,Exception中提示是10.0.0.?的网络连接超时。 一时各种怀疑,但是都找不到问题;后在stackoverflow 上找到打开JMX日志的方式,觉得此方法具有解决这一类问题的通适性。 创建属性文件(.properties)```handlers= java.util.logging.ConsoleHandler.level=ALL java.util.logging.FileHandler.pattern = jmx.logjava.util.logging.FileHandler.limit = 50000java.util.logging.FileHandler.count = 1java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter java.util.logging.ConsoleHandler.level = FINESTjava.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter // Use FINER or FINEST for javax.management.remote.level - FINEST is// very verbose...//javax.management.level=FINESTjavax.management.remote.level=FINEST java.security.debug=all``` 在调用测试程序时,配置使用上述属性文件:```java -Djava.util.logging.config.file=./logging.properties JMXDemoClient ``` _假设你的测试程序被编译为 JMXDemoClient.class_ 通过这种方式,在我的案例中,日志清楚的显示,是JMX Server(此处是Tomcat)要客户端去跟10.0.0.? 连接;所以一定是Tomcat端的配置有问题,进行检查后,发现服务器IP地址变更后,`java.rmi.server.hostname` 没有做更新,仍然是原来的IP地址。 总结: 通过调整属性文件,可以输出任意底层API的各种级别日志。

使用Logstash JDBC获取Oracle数据的小问题

需要将Oracle中的数据,通过Logstash JDBC input插件,写入到Elasticsearch中,遇到了一个因为时间类型设置不正确导致的性能问题。为了能够不断的将数据增量写入Elasticsearch,做了如下配置: record_last_run => true        tracking_column => "mark_datetime"       tracking_column_type => "timestamp"        use_column_value => true 这里设置tracking_column_type出现了问题,数据库表中mark_datetime字段是Date类型。虽然整个pipline能够运行无误,但是运行效率发现不够好。到Oracle数据库中检查,发现SQL语句变成了 SYS_EXTRACT_UTC("M"."MARK_DATETIME")>TIMESTAMP' 2015-07-19 11:17:03.000000000’ 这就导致了MARK_DATETIME上现有的索引不能使用。Oracle在Date和Timestamp之间自动做了转换。