Вход в Скала - PullRequest
       47

Вход в Скала

159 голосов
/ 11 июня 2009

Что такое хороший способ входа в приложение Scala? Что-то, что согласуется с философией языка, не загромождает код, а также требует минимального обслуживания и ненавязчиво. Вот список основных требований:

  • простой
  • не загромождает код. Scala отлично подходит для своей краткости. Я не хочу, чтобы половина моего кода записывала операторы
  • формат журнала может быть изменен, чтобы соответствовать остальной части моего корпоративного журнала и программного обеспечения для мониторинга
  • поддерживает уровни ведения журнала (т.е. отладка, трассировка, ошибка)
  • может вести запись на диск, а также в другие места назначения (например, сокет, консоль и т. Д.)
  • минимальная конфигурация, если есть
  • работает в контейнерах (т. Е. Веб-сервер)
  • (необязательно, но приятно иметь) поставляется как часть языка или как артефакт maven, поэтому мне не нужно взламывать свои сборки, чтобы использовать его

Я знаю, что могу использовать существующие решения для ведения журналов Java, но они терпят неудачу, по крайней мере, в двух из вышеперечисленных, а именно в беспорядке и конфигурации.

Спасибо за ваши ответы.

Ответы [ 13 ]

2 голосов
/ 21 марта 2017

Быстрые и легкие формы.

Scala 2.10 и старше:

import com.typesafe.scalalogging.slf4j.Logger
import org.slf4j.LoggerFactory
val logger = Logger(LoggerFactory.getLogger("TheLoggerName"))
logger.debug("Useful message....")

И build.sbt:

libraryDependencies += "com.typesafe" %% "scalalogging-slf4j" % "1.1.0"

Scala 2.11+ и новее:

import import com.typesafe.scalalogging.Logger
import org.slf4j.LoggerFactory
val logger = Logger(LoggerFactory.getLogger("TheLoggerName"))
logger.debug("Useful message....")

И build.sbt:

libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0"
2 голосов
/ 23 июня 2013

Мне очень удобно использовать какой-то java-регистратор, например, sl4j, с простой оболочкой scala, что дает мне такой синтаксис

val #! = new Logger(..) // somewhere deep in dsl.logging.

object User with dsl.logging {

  #! ! "info message"
  #! dbg "debug message"
  #! trace "var a=true"

}

На мой взгляд, очень полезное сочетание проверенных java фреймворков и необычного синтаксиса scala.

2 голосов
/ 17 января 2012

После использования slf4s и logula какое-то время я написал loglady, простую черту записи в журнал slf4j.

Он предлагает API, аналогичный API библиотеки журналов Python, что делает обычные случаи (базовая строка, простое форматирование) тривиальными и позволяет избежать форматирования шаблона.

http://github.com/dln/loglady/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...