【问题标题】:Scala Log4j configurationScala Log4j 配置
【发布时间】:2018-04-26 14:40:54
【问题描述】:

所以我试图在我的 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

打包我的包

class MyClass extends LogHelper {

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

}

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

【问题讨论】:

  • 只是为了让一切清楚,你能分享一下你在build.sbt中有什么依赖吗?

标签: scala apache-spark log4j


【解决方案1】:

参考这篇文章。他们有精确的步骤来登录 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

第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

【讨论】:

  • 感谢您的更新,下次会记住这一点。
【解决方案2】:

您必须拥有 log4j.properties 在您的项目中,您将找到设置,您可以通过这些设置来定义日志的存放位置。 如果这些出现在控制台上,那么您将找到 consoleAppender 的选项。我认为这应该有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多