【发布时间】:2021-03-05 02:54:19
【问题描述】:
我在我的 tomcat9 服务中使用 AWS IoT 库
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-iot-device-sdk-java</artifactId>
<version>1.3.7</version>
</dependency>
我想知道是否可以将 org.eclipse.paho.client.mqttv3.logging.Logger 的所有日志打印到我的日志文件/控制台中?所有的跟踪日志都是这样的:
//@TRACE 603=clearState
log.fine(CLASS_NAME, methodName,">");
我该怎么做?
更新 - 我的代码:
Service.java
static {
MyManager manager = new MyManager();
}
MyManager.java
public MyManager() {
iotClient = new AWSIotMqttClient(Configuration.IOT_CLIENT_ENDPOINT,
deviceId,
keyStore,
keystorePass);
iotClient.setKeepAliveInterval(30000); //30 seconds
iotClient.connect();
}
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration status="warn">
<Properties>
<Property name="basePath">${sys:catalina.base}/logs</Property>
</Properties>
<Appenders>
<RollingFile name="fileLogger" fileName="${basePath}/app-info.log" filePattern="${basePath}/app-info-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Root level="debug" additivity="false">
<appender-ref ref="console" />
<appender-ref ref="fileLogger" level="info" />
</Root>
</Loggers>
</Configuration>
例如我感兴趣的日志:
由于iotClient.setKeepAliveInterval(30000) 这一行,iot 客户端在org.eclipse.paho.client.mqttv3.internal.ClientState#checkForActivity 中每 30 秒发送一次 ping 请求,我想在此过程中获取所有日志。
谢谢。
【问题讨论】:
-
您在应用程序中使用的日志库是什么?
-
我的服务使用的是Log4j2
-
是使用 SL4J 还是普通的 Log4j2 ?
-
与SL4J一起
标签: java logging mqtt aws-iot levels