【问题标题】:Log4j + Scala: How to log only my custom messages?Log4j + Scala:如何只记录我的自定义消息?
【发布时间】:2019-01-01 10:39:03
【问题描述】:

我有一个 Spark 应用程序(用 Scala 编写)和要记录的以下代码。 我只想记录我的自定义消息,而不是包括 Spark 消息在内的所有内容。

到目前为止,我有以下代码:

// creates pattern layout
var  layout = new PatternLayout()
var conversionPattern = "%-7p %d [%t] %c %x - %m%n"
layout.setConversionPattern(conversionPattern)

// creates console appender
var consoleAppender = new ConsoleAppender()
consoleAppender.setLayout(layout)
consoleAppender.activateOptions()

// creates file appender
var fileAppender = new FileAppender()
fileAppender.setFile("applog3.txt")
fileAppender.setLayout(layout)
fileAppender.activateOptions()

// configures the root logger
var rootLogger = Logger.getRootLogger
rootLogger.setLevel(Level.INFO)
rootLogger.addAppender(consoleAppender)
rootLogger.addAppender(fileAppender)

// creates a custom logger and log messages
var logger = Logger.getLogger(this.getClass())
logger.debug("this is a debug log message")
logger.info("this is a information log message")
logger.warn("this is a warning log message")
logger.trace("this is a TRACE log message")

if (arg.length < 8) {
  logger.error("=> wrong parameters number")
  System.err.println("Parameters ....")
  System.exit(1)
}

但我可以看到,不仅是我的消息,还有其他与 Spark 相关的消息。例如:

INFO    [task-result-getter-1] org.apache.spark.scheduler.TaskSetManager  - Finished task 1.0 in stage 5.0 (TID 6) in 631 ms on localhost (executor driver) (1/2)

问题是我只想查看我的消息(信息、错误,或者我想记录的任何内容)以及从 Spark 记录的错误。我怎么能通过代码做到这一点?

【问题讨论】:

    标签: scala apache-spark logging log4j


    【解决方案1】:

    需要注意的两点:

    1. 将自定义记录器的可加性设置为“false”

    logger.setAdditivity(false)

    这将防止来自您的客户记录器的日志被父记录器重复

    1. 将根记录器的日志级别设置为“错误”

    rootLogger.setLevel(Level.ERROR)

    这将只打印来自任何包的 ERROR 级别日志,除非您为您的包/类定义了具有不同日志级别的自定义记录器。

    由于您已经为您的类/包定义了一个自定义记录器,那么上述步骤将产生您期望的日志。

    【讨论】:

    • 添加logger.setAdditivity(false),我收到这条消息:log4j:WARN No appenders could be found for logger (org.apache.spark.mllib.sampling.runROS$). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    猜你喜欢
    • 2015-03-09
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多