Scala Log4j 配置

标签 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)
}

我的类(class)

打包我的包

class MyClass extends LogHelper {

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

}

但我真的不知道日志放在哪里,也不知道如何将其打印到文件中。我的代码正在运行我使用 spark-submit 运行的 spark 作业。我如何设置它以同时打印到控制台和日志文件?

最佳答案

引用这篇文章。他们有精确的步骤来登录 Scala。

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

第 1 步:使用以下 log4j 依赖项更新 build.sbt

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

第二步:在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

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

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

关于Scala Log4j 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50045851/

相关文章:

arrays - Scala 与列表中当前元素和所有过去元素的部分求和

Scala 复制具有泛型类型的案例类

scala - Scala Spark 中的 groupBy 函数需要 Lzocodec 吗?

python - PySpark 窗口函数 : multiple conditions in orderBy on rangeBetween/rowsBetween

java - Log4j 性能明智 %F 与 getClass().getSimpleName()

scala - 隐式参数 VS 默认参数值

json - 获取 play.api.libs.json.JsValue 的所有键

apache-spark - 根据另一列的元素从pyspark数组中删除元素

java - 如何配置 log4j 以忽略层次结构记录器

java - 将写入 Tomcat 的 catalina.out 日志级别的 servlet 的日志级别限制为