将日志重定向到Scala中的文件

时间:2019-11-10 22:33:09

标签: scala apache-spark logging log4j2

我是Scala的新手,我正在努力寻找如何将日志重定向到Scala中的文件的方法。这是Python中的一项简单任务,但是我找不到Scala的相关文档。我正在尝试使用log4j,但是我也不介意使用其他软件包。我找到的所有参考资料都讨论了如何通过配置文件来执行此操作,但是我想以编程方式执行此操作。

这是到目前为止我发现并可以使用的内容,但是我不知道如何添加文件。我认为FileAppender应该可以解决我的问题,但找不到如何将其添加到记录器的示例:

import org.apache.log4j.Logger    
val logger = Logger.getLogger("My Logger")
logger.info("I am a log message")

我希望达到的目的(还有一些额外的细节)可以用Python编写,如下所示:

import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
handler = logging.FileHandler('output.log')
handler.setLevel(logging.INFO)
logger.addHandler(handler)
logger.info("I am a log message")

1 个答案:

答案 0 :(得分:0)

评论链接已翻译为Scala:

import org.apache.log4j.PatternLayout
import org.apache.log4j.{Level, Logger, FileAppender}
val fa = new FileAppender
fa.setName("FileLogger")
fa.setFile("mylog.log")
fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"))
fa.setThreshold(Level.DEBUG)
fa.setAppend(true)
fa.activateOptions

//add appender to any Logger (here is root)
Logger.getRootLogger.addAppender(fa)

// usage
val logger = Logger.getLogger("My Logger")
logger.info("I am a log message")

如果“ import org.apache.log4j。{Level,Logger,FileAppender}”不起作用,则意味着在类路径中缺少log4j库。