【问题标题】:Where is log4j logging out?log4j 在哪里注销?
【发布时间】:2022-01-13 15:03:39
【问题描述】:

在一个遗留项目中,我发现在 log4j.properties 中 appender 文件定义为:

log4j.appender.file.File=log/logging.log

在哪里可以找到 linux 中 log4j 的输出文件? 在系统级别的应用程序“LOG.info”命令的日志没有出现,只有它的执行开始

 2022-01-13 11:03:19 INFO  DAGScheduler:54 - Submitting 200 missing tasks from ShuffleMapStage 2 (MapPartitionsRDD[12] at count at appname.java:133) (first 15 tasks are for parti.. ```

***编辑:完整的 log4j 属性。:

#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

log4j.rootCategory=INFO, console, file

# Set events to be logged to a file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=log/logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n


# Set everything to be logged to the console
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{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# Set the default spark-shell log level to WARN. When running the spark-shell, the
# log level for this class is used to overwrite the root logger's log level, so that
# the user can have different defaults for the shell and regular Spark apps.
log4j.logger.org.apache.spark.repl.Main=WARN

# Settings to quiet third party logs that are too verbose
log4j.logger.org.spark_project.jetty=WARN
log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=WARN
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=WARN

# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR

# Parquet related logging
log4j.logger.org.apache.parquet.CorruptStatistics=ERROR
log4j.logger.parquet.CorruptStatistics=ERROR

【问题讨论】:

  • 我不能确定在 Linux 上,但我认为这并不重要。 log 文件夹应该是相对于代码项目的基本目录的文件夹。在 IDE 中,您可能不会立即看到它(Eclipse 在这方面是臭名昭著的),因此您必须刷新您的项目才能看到它。此外,仅仅因为您有一个文件附加程序,并不意味着您实际上正在写入它。确保 Log4J 配置不只是输出到控制台。最后,如果您使用的是 Log4J,建议您升级到最新的 Log4J2 版本。

标签: java linux apache-spark logging log4j


【解决方案1】:

log4j 路径没有特定于 log4j 的基本路径。

如果您在 log4j 配置中使用相对文件路径,它将以与解析所有相对文件路径相同的方式进行解析。它将相对于 JVM 的 工作目录 进行解析。粗略地说,就是“您启动应用程序的当前目录”。

见:How does Java resolve a relative path in new File()?

【讨论】:

    【解决方案2】:

    检查一下:

    log4j.appender.stdout.File=${myhome}/log/myapp.log 
    

    当然,如果没有这个语句,请检查应用程序的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多