У меня есть некоторый код, написанный на Java, который использует Apache Spark, и я хочу отключить все уровни сообщений журнала Log4j (ERROR, WARN и т. Д.) И сохранить только те уровни INFO, которые содержат определенную строку. Другими словами, у меня есть эти журналы:
19/04/21 19:09:40 INFO Instrumentation: [e10c0eb5] {"seed":26,"impurity":"entropy","featuresCol":"indexedFeatures","maxDepth":5,"labelCol":"indexedLabel","numTrees":10}
19/04/21 19:09:40 INFO Instrumentation: [752ad4c3] {"seed":26,"impurity":"entropy","featuresCol":"indexedFeatures","maxDepth":5,"labelCol":"indexedLabel","numTrees":12}
19/04/21 19:09:40 INFO Instrumentation: [d9d09329] {"seed":26,"impurity":"entropy","featuresCol":"indexedFeatures","maxDepth":5,"labelCol":"indexedLabel","numTrees":11}
19/04/21 19:09:40 INFO SparkContext: Starting job: take at DecisionTreeMetadata.scala:112
19/04/21 19:09:40 INFO SparkContext: Starting job: take at DecisionTreeMetadata.scala:112
19/04/21 19:09:40 INFO SparkContext: Starting job: take at DecisionTreeMetadata.scala:112
19/04/21 19:09:40 INFO DAGScheduler: Got job 5 (take at DecisionTreeMetadata.scala:112) with 1 output partitions
19/04/21 19:09:40 INFO DAGScheduler: Final stage: ResultStage 6 (take at DecisionTreeMetadata.scala:112)
19/04/21 19:09:40 INFO DAGScheduler: Parents of final stage: List()
19/04/21 19:09:40 INFO DAGScheduler: Missing parents: List()
Я хочу оставить только те, которые начинаются с "INFO Instrumentation".
У меня есть этот пример кода:
/*Logger.getLogger("org").setLevel(Level.OFF);
Logger.getLogger("akka").setLevel(Level.OFF);*/
SparkSession sparkSession = new SparkSession
.Builder()
.appName("Random Forest Classifier")
.master("local[*]")
.config("spark.ui.port", "40000")
.getOrCreate();
Я хочу изменить первые две прокомментированные строки, чтобы применить мой фильтр, возможно ли это, и если да, то как это сделать ??
Я решил свою проблему; оказалось, что мне не нужен ни фильтр, ни аппендир; Я просто отключаю все журналы для "org" и "akka", затем я включаю только уровень INFO для этого класса: "org.apache.spark.ml.util", например:
Logger.getLogger("org").setLevel(Level.OFF);
Logger.getLogger("akka").setLevel(Level.OFF);
Logger.getLogger("org.apache.spark.ml.util").setLevel(Level.INFO);
Спасибо за вашу помощь.