Я использую Logback с SLF4J для регистрации в Stackdriver, и я следую примеру из Google Cloud . Мое приложение написано на Scala и работает в кластере Dataproc на GCP.
logback.xml имеет следующее содержимое.
<configuration>
<appender name="CLOUD" class="com.google.cloud.logging.logback.LoggingAppender">
<!-- Optional : filter logs at or above a level -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<log>application.log</log> <!-- Optional : default java.log -->
<resourceType>gae_app</resourceType> <!-- Optional : default: auto-detected, fallback: global -->
<enhancer>com.company.customer.utils.MyLoggingEnhancer</enhancer> <!-- Optional -->
<flushLevel>WARN</flushLevel> <!-- Optional : default ERROR -->
</appender>
<root level="info">
<appender-ref ref="CLOUD" />
</root>
</configuration>
, а MyLoggingEnhancer равен
package com.company.customer.utils
import com.google.cloud.logging.LogEntry.Builder
import com.google.cloud.logging.LoggingEnhancer
class MyLoggingEnhancer extends LoggingEnhancer {
override def enhanceLogEntry(builder: Builder): Unit = {
builder
.addLabel("test-label-1", "test-value-1") //also not showing on the stack driver
}
}
ИЯ создаю объект журналирования в классах
private val LOGGER: Logger = LoggerFactory.getLogger(this.getClass)
И я записал сообщение от объекта регистратора, например
LOGGER.info("Spark Streaming Started for MyApplication")
Проблема в том, что resourceType и logName неправильно установлены в журналах драйвера стека. logName автоматически устанавливается на yarn-userlogs , а resourceType устанавливается на cloud_dataproc_cluster . Я хочу установить resourceType = Global и logName = MyApp так что я могу отфильтровать журналы MyApp в глобальной иерархии.
Я пытался после удаления этой строки из logback.xml
<resourceType>gae_app</resourceType>
и добавив эту строку
<resourceType>global</resourceType>
но не повезло. Любой вид помощи высоко ценится. Метка test-label-1 , которую я предоставляю, находится в LoggingEnhancer, также не отображается в драйвере стека.
Моя полезная нагрузка Json в драйвере стека равна
{
insertId: "gn8clokwpjqptwo5h"
jsonPayload: {
application: "application_1568634817510_0189"
class: "com.MyClass"
container: "container_e01_1568634817510_0189_01_000001"
container_logname: "stderr"
filename: "application_1568634817510_0189.container_e01_1568634817510_0189_01_000001.stderr"
message: "Spark Streaming Started for MyApplication"
}
labels: {
compute.googleapis.com / resource_id: "1437319101399877659"
compute.googleapis.com / resource_name: "e-spark-w-2"
compute.googleapis.com / zone: "us"
}
logName: "projects/myProject/logs/yarn-userlogs"
receiveTimestamp: "2019-10-01T05:25:16.044579001Z"
resource: {
labels: {
cluster_name: "shuttle-spark"
cluster_uuid: "d1557db6-72ee-4873-a276-4bd4ea0e89bb"
project_id: "MyProjectId"
region: "us"
}
type: "cloud_dataproc_cluster"
}
severity: "INFO"
timestamp: "2019-10-01T05:25:10Z"
}