參考官網:https://wiki.eclipse.org/Paho/Log_and_Debug_in_the_Java_client
使用paho的包併發發送MQTT消息時總是報錯,於是想打開日誌調試。
1. 首先在項目裏新建一個日誌配置文件jsr47min.properties
org.eclipse.paho.client.mqttv3.handlers=java.util.logging.MemoryHandler
org.eclipse.paho.client.mqttv3.level=ALL
# It is possible to set more granular trace on a per class basis e.g.
#org.eclipse.paho.client.mqttv3.internal.ClientComms.level=ALL
java.util.logging.MemoryHandler.level=ALL
java.util.logging.MemoryHandler.size=10000
java.util.logging.MemoryHandler.push=ALL
java.util.logging.MemoryHandler.target=java.util.logging.FileHandler
#java.util.logging.MemoryHandler.target=java.util.logging.ConsoleHandler
java.util.logging.FileHandler.level=ALL
# Naming style for the output file:
# (The output file is placed in the directory
# defined by the "user.home" System property.)
# See java.util.logging for more options
java.util.logging.FileHandler.pattern=%h/paho%u.log
# Limiting size of output file in bytes:
java.util.logging.FileHandler.limit=200000
# Number of output files to cycle through, by appending an
# integer to the base file name:
java.util.logging.FileHandler.count=1000
# Style of output (Simple or XML):
java.util.logging.FileHandler.formatter=org.eclipse.paho.client.mqttv3.logging.SimpleLogFormatter
由於併發,日誌量較大,很容易錯過日誌,所以我將保留文件改爲了1000個
輸出日誌級別爲ALL
2. 啓動時指定日誌配置文件路徑
如果是普通的java程序,則在啓動時加上-Djava.util.logging.config.file=[jsr47min.properties的路徑]即可。
我的程序是運行在tomcat上,故此處介紹下tomcat如何配置這個參數。
- windows下eclipse配置方式:
(1) 在eclipse中打開tomcat並點擊配置
(2)在VM arguments里加入-Djava.util.logging.config.file=[jsr47min.properties的路徑]
(3)然後直接在eclipse中啓動tomcat即可。
linux下tomcat配置方式
啓動tomcat是用tomcat路徑下的bin/startup.sh,實際這個腳本是在調用catalina.sh。
觀察catalina.sh,裏面有介紹如何配置java.util.logging.config.file
而默認的配置是這樣的
這個LOGGING_MANAGER也會影響到我們接下來要配置的日誌打印
所以我們要在在setenv.sh中添加如下配置:
LOGGING_CONFIG="-Djava.util.logging.config.file=[jsr47min.properties的路徑]"
LOGGING_MANAGER=""
配置好後通過startup.sh啓動即可。
3. 查看日誌文件
根據配置文件上的配置java.util.logging.FileHandler.pattern=%h/paho%u.log
日誌文件默認會用用戶home目錄下。