Перенаправление журналов в файл в Scala - PullRequest
0 голосов
/ 11 ноября 2019

Я новичок в 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 голосов
/ 12 ноября 2019

Ссылка на комментарий, переведенный на 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 отсутствуют в classpath.

...