Skip to content

Commit cf02a81

Browse files
committed
feat(hive): add Log4j2 configuration for Hive Metastore container
- Set `HIVE_ROOT_LOGGER` and `HIVE_LOG4J2_CONFIGURATION_FILE` environment variables for container logging. - Added dynamic generation of `hive-log4j2.properties` for console-based logging configuration.
1 parent cf82343 commit cf02a81

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

core/src/main/kotlin/org/openprojectx/bigdata/test/core/container/BigDataContainerFactory.kt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,8 @@ internal class BigDataContainerFactory(
274274
hiveMetastoreObjectStoreConfiguration().isNotEmpty()
275275
) {
276276
container.withEnv("HIVE_CUSTOM_CONF_DIR", "/bigdata-test/hive-conf")
277+
container.withEnv("HIVE_ROOT_LOGGER", "console")
278+
container.withEnv("HIVE_LOG4J2_CONFIGURATION_FILE", "/bigdata-test/hive-conf/hive-log4j2.properties")
277279
openSourceHiveConfigurationFiles().forEach { (fileName, content) ->
278280
container.withCopyToContainer(Transferable.of(content), "/bigdata-test/hive-conf/$fileName")
279281
}
@@ -751,9 +753,43 @@ internal class BigDataContainerFactory(
751753
"hive-site.xml" to configurationXml(metastoreProperties + hadoopProperties),
752754
"metastore-site.xml" to configurationXml(metastoreProperties + hadoopProperties),
753755
"core-site.xml" to configurationXml(hadoopProperties),
756+
"hive-log4j2.properties" to hiveMetastoreConsoleLog4j2Properties(),
757+
"metastore-log4j2.properties" to hiveMetastoreConsoleLog4j2Properties(),
754758
)
755759
}
756760

761+
private fun hiveMetastoreConsoleLog4j2Properties(): String =
762+
"""
763+
name = BigDataTestHiveMetastoreLog4j2
764+
765+
property.hive.log.level = INFO
766+
property.hive.root.logger = console
767+
property.hive.perflogger.log.level = INFO
768+
769+
appenders = console
770+
771+
appender.console.name = console
772+
appender.console.type = Console
773+
appender.console.layout.type = PatternLayout
774+
appender.console.layout.pattern = %d{ISO8601} %5p [%t] %c{2}: %m%n
775+
776+
logger.DataNucleus.name = DataNucleus
777+
logger.DataNucleus.level = ERROR
778+
779+
logger.Datastore.name = Datastore
780+
logger.Datastore.level = ERROR
781+
782+
logger.JPOX.name = JPOX
783+
logger.JPOX.level = ERROR
784+
785+
logger.PerfLogger.name = org.apache.hadoop.hive.ql.log.PerfLogger
786+
logger.PerfLogger.level = ${'$'}{sys:hive.perflogger.log.level}
787+
788+
rootLogger.level = ${'$'}{sys:hive.log.level}
789+
rootLogger.appenderRefs = console
790+
rootLogger.appenderRef.console.ref = ${'$'}{sys:hive.root.logger}
791+
""".trimIndent()
792+
757793
private fun writeConfigurationXml(path: Path, properties: Map<String, String>) {
758794
path.parent?.let { Files.createDirectories(it) }
759795
Files.writeString(path, configurationXml(properties), StandardCharsets.UTF_8)

0 commit comments

Comments
 (0)