Ubuntu Java日志与应用程序调试技巧
一 日志框架与输出配置
<configuration>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder>
</appender>
<root level="info"><appender-ref ref="console"/></root>
</configuration>
示例(Log4j2 片段):<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Policies><SizeBasedTriggeringPolicy size="10MB"/></Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
</Appenders>
<Loggers><Root level="info"><AppenderRef ref="Console"/><AppenderRef ref="RollingFile"/></Root></Loggers>
</Configuration>
示例(JUL 片段):handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
java.util.logging.FileHandler.pattern=%h/myapp.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
.level=ALL
启动时加载配置:java -Djava.util.logging.config.file=logging.properties -jar app.jar。以上做法便于在不同环境快速切换日志级别与输出目的地。二 在 Ubuntu 终端高效查看与分析日志
三 JVM 与 GC 日志的开启与分析
-Xms512m -Xmx2048m \
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps \
-Xloggc:/var/log/java/gc.log
使用 tail -f /var/log/java/gc.log 实时观察;借助 GCViewer 等工具可视化分析停顿时间与回收效果。合理设置堆大小(如 -Xms/-Xmx)并结合 GC 日志判断是否需要调优年轻代/老年代比例与回收器策略。四 线程与内存问题的快速定位
五 远程调试与常见问题处理
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
在 IntelliJ IDEA/Eclipse 创建 Remote 配置,连接到 host:5005 即可断点、观察变量与调用栈。