Scala Log4j配置

时间:2018-04-26 14:40:54

标签: scala apache-spark log4j

所以我正在尝试在我的scala代码中设置log4j。这就是我到目前为止所做的:

LogHelper.scala

package myPackage

import org.apache.log4j.Logger

trait LogHelper {
    val loggerName: String = this.getClass.getName
    lazy val logger: Logger = Logger.getLogger(loggerName)
}

my class

打包myPackage

class MyClass extends LogHelper {

    ...
    logger.debug("my message")
    ...

}

但我真的不知道日志的去向,或者如何将其打印到文件中。我的代码正在运行一个spark作业,我用spark-submit运行。如何将其设置为打印到控制台和日志文件?

2 个答案:

答案 0 :(得分:0)

您必须拥有log4j.properties在项目中,您将找到用于定义日志所在位置的设置。 如果这些都在控制台上,那么你会找到consoleAppender的选项。我认为这应该有效。

答案 1 :(得分:0)

请参阅此帖子。他们有精确的步骤来登录Scala。

http://discuss.itversity.com/t/setting-up-log4j/5839

第1步:使用低于log4j的依赖关系更新build.sbt

libraryDependencies += "log4j" % "log4j" % "1.2.14"

步骤2:在src / main / resources下创建Log4j.properties文件,并进行如下更新:

# Define the root logger with appender file
log = /tmp/log4j
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
SBT run, can be seen in /tmp/log4j/log.out log

第3步:可以在以下代码中使用:

import org.apache.log4j.Logger

object HelloWorld {
  val logger = Logger.getLogger(this.getClass.getName)
  def main(args: Array[String]): Unit = {
    logger.info("Logger : Welcome to log4j")
  }
}

如果您想了解更多有关使用log4j进行日志记录的信息,我建议在DZone上发布此帖子:

https://dzone.com/articles/logging-with-log4j-in-java