在Intellij中使用Maven进行日志记录和调试

在Intellij中使用Maven进行日志记录和调试,maven,intellij-idea,maven-surefire-plugin,Maven,Intellij Idea,Maven Surefire Plugin,正如您在屏幕截图中看到的,正在调试一个HBase测试用例。我们还可以看到运行/调试配置对话框和设置 这个特定的测试用例配置是通过右键单击testInitTableMapperConfigJob方法并选择“Debug testInitTableMapperConfigJob”生成的。结果是:amaven“Mvn”测试目标使用了“test compile surefire:test”插件 这是运行配置命令行 测试编译surefire:test-Dtest=org.apache.hadoop.hbas

正如您在屏幕截图中看到的,正在调试一个HBase测试用例。我们还可以看到运行/调试配置对话框和设置

这个特定的测试用例配置是通过右键单击testInitTableMapperConfigJob方法并选择“Debug testInitTableMapperConfigJob”生成的。结果是:amaven“Mvn”测试目标使用了“test compile surefire:test”插件

这是运行配置命令行

测试编译surefire:test-Dtest=org.apache.hadoop.hbase.mapred.TestTableSnapshotInputFormat#testInitTableSnapshotMapperJobConfig-DforkMode=never-DforkCount=0

我想在以下两个方面提供帮助:

a) 为什么显示的断点(红色)没有得到尊重? b) 为什么控制台上没有显示测试用例的HBase日志消息和stdout/stderr(特别是“正在执行测试用例:…”消息)

下面是test/resources/log4j.properties文件:请注意,hadoop.hbase类的级别设置为DEBUG

hbase.root.logger=INFO,console
hbase.log.dir=.
hbase.log.file=hbase.log

# Define the root logger to the system property "hbase.root.logger".
log4j.rootLogger=${hbase.root.logger}

# Logging Threshold
log4j.threshhold=ALL

#
# Daily Rolling File Appender
#
log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file}

# Rollver at midnight
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd

# 30-day backup
#log4j.appender.DRFA.MaxBackupIndex=30
log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
# Debugging Pattern format
log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %C{2}(%L): %m%n


#
# console
# Add "console" to rootlogger above if you want to use this
#
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %C{2}(%L): %m%n

# Custom Logging levels

#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG

log4j.logger.org.apache.hadoop=WARN
log4j.logger.org.apache.zookeeper=ERROR
log4j.logger.org.apache.hadoop.hbase=DEBUG

#These two settings are workarounds against spurious logs from the minicluster.
#See HBASE-4709
log4j.org.apache.hadoop.metrics2.impl.MetricsSystemImpl=ERROR
log4j.org.apache.hadoop.metrics2.util.MBeans=ERROR
# Enable this to get detailed connection error/retry logging.
log4j.logger.org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation=DEBUG

您需要设置
-DforkMode=never
,或者只使用它来为您执行此操作。

嗨,我更新了OP以显示已经包含了-DforkMode=never-dforkmount=0(注意它是“never”而不是“none”)。这是一个股票HBase测试用例,不是我自己的。在调试模式下使用mvn在命令行上运行时,它在给定的断点处运行和停止。在方法的前面放置断点,然后单步执行到您认为有断点的那一行。查看您感兴趣的行是否实际执行。@EngineerDollery屏幕截图部分显示控制台区域,该区域打印消息“Running o.a.s.m.TestTableSnapshotINputFormatInt”。代码正在运行到完成,只是没有断点或调试语句。