Завершить «Пример регистрации Scala»

3 ответа

9

IIRC он будет печатать сообщения, начиная с уровня информации по умолчанию. Чтобы изменить это, вам нужно поместить файл logback.xml в src/main/resources (или использовать параметр -Dlogback.configurationFile=/path/to/config.xml JVM). См. Конфигурация в документации по протоколированию.

    
ответ дан Alexey Romanov 16.03.2015 в 07:47
источник
  • На самом деле у меня уже есть соответствующий файл «logback.xml». Он по-прежнему не печатает отладочные сообщения. Я соответствующим образом обновил свой вопрос. –  jans 16.03.2015 в 14:06
  • Попробуйте добавить libraryDependencies +="ch.qos.logback"% "logback-classic"% "1.1.2" в build.sbt. Вы также должны удалить старую версию ("scala-logging-slf4j_2.11"% "2.1.2"); они могут конфликтовать. –  Alexey Romanov 16.03.2015 в 16:21
  • Да, добавление libraryDependencies +="ch.qos.logback"% "logback-classic"% "1.1.2" решает его. Большое спасибо. –  jans 16.03.2015 в 21:33
  • Есть ли для этого документация? уровень отладочного журнала для меня тоже не работает. –  Sohaib 18.06.2015 в 11:50
  • @Vinay Вы должны задать вопрос как отдельный вопрос. –  Alexey Romanov 18.08.2015 в 08:41
33

Для тех, кто все еще борется за то, как сделать свою работу scala-logging в вашем проекте sbt. Им просто нужно выполнить следующие шаги:

  1. Добавьте эти две зависимости в свой build.sbt :

    libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0"
    libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.2"
    
  2. Создайте файл logback.xml в вашем / src / main / resources / и вставьте ниже упомянутый контент в этот файл.

    <configuration>
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <appender name="FILE" class="ch.qos.logback.core.FileAppender">
            <!-- path to your log file, where you want to store logs -->
            <file>/Users/yourusername/test.log</file>
            <append>false</append>
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <root level="debug">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE" />
        </root>
    </configuration>
    
  3. Расширьте класс или объект Scala с помощью свойства LazyLogging :

    import com.typesafe.scalalogging.slf4j.LazyLogging
    class MyClass extends LazyLogging {
      logger.debug("This is very convenient ;-)")
    }
    
  4. Сделано.

P.S: Только сторона примечания, что logger уже является участником класса LazyLogging, поэтому вам не нужно его создавать (как показано в приведенном выше примере)

    
ответ дан Vinay 14.08.2015 в 08:48
источник
  • import com.typesafe.scalalogging.LazyLogging - это то, что работает для меня. –  Chris Prince 08.12.2016 в 21:35
2

Вы близки, но вы должны объявить экземпляр logger с использованием регистратора SLF4J в методе apply для Logger -компаньона в com.typesafe.scalalogging . В вашем build.sbt включены:

libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0"

libraryDependencies += "org.slf4j" % "slf4j-api" % "1.7.10"

Тогда это будет работать:

import com.typesafe.scalalogging._
import org.slf4j.LoggerFactory

class MyClass extends LazyLogging {
  // ...
  val logger = Logger(LoggerFactory.getLogger(this.getClass))
  logger.debug("Here goes my debug message.")
  // ...
}

Здесь является ссылкой для LoggerFactory. Надеюсь, это поможет!

    
ответ дан Joseph Sawyer 16.03.2015 в 04:37
источник
  • В свойстве LazyLogging уже включен член журнала, который является экземпляром класса SLF4J Logger, поэтому я не думаю, что это он. –  Sean Vieira 16.03.2015 в 04:45
  • Спасибо за вашу помощь. Но это не работает для меня. «logger» уже определен в значении «LazyLogging». Поэтому я переименовал 'logger' в 'mylogger', который компилирует, но все же отладочные сообщения не печатаются. –  jans 16.03.2015 в 14:03