Scala记录行号 – slf4s / slf4j?
更新:已解决!
请参阅下面我添加的答案 有没有人知道是否有办法将实际行号输出到控制台?我在这里试图进入Scala,但是由于我无法获得这样的基本东西,所以很难得到很多. 我已经设置了slf4s来包装slf4j – log4j – jcl-over-slf4j.问题是我得到的行号根本不匹配.比Scala类甚至包含的行数要高得多.这是因为行号实际上是Java中间行号吗? 是否有任何简单的方法来设置满足这些要求的日志记录?: >可互操作,兼容java和&斯卡拉 谢谢! 杰米 解决方法
我发现
logback (
Ceki Gülcü)效果很好,也保留了行号!
(它可以替代 log4j :太棒了!)
import ch.qos.logback._ import org.slf4j._ object Main { def logger = LoggerFactory.getLogger("Main") var thingy = { x:Int => logger.info("x=" + x) x + 1 } def main(args: Array[String]) { logger.info("Hello.") logger.info("Hello again!") val myInts : List[Int] = List(-25,1,5,20) val myInts2 : List[Int] = myInts.filter { x:Int => x > 0 } logger.info("my ints2:" + myInts2) val myInts3 = myInts2.map(p => p * 2 ) logger.info("my ints3:" + myInts3) logger.info(thingy(1) + "") } } 对于那些努力开始使用Scala的人来说,这就是我为了获得基本骨架而做的事情: 1)Download 2)创建一个bash脚本作为nano / opt / bin / sbt中sbt启动器的快捷方式: #!/bin/bash java -jar /opt/sbt-launch-0.7.5.RC0.jar "$@" (使其可执行) $sudo chmod ug+x ./sbt 确保它也在你的道路上. 3)创建和配置sbt项目: $mkdir ./sc01 $cd ./sc01 $sbt $mkdir ./project/build</pre> $nano ./project/build/Project.scala</pre> 把它放在那里: import sbt._ class sc01(info: ProjectInfo) extends DefaultProject(info) { // dependencies val logback_core = "ch.qos.logback" % "logback-core" % "0.9.24" % "compile" //LGPL 2.1 val logback_classic = "ch.qos.logback" % "logback-classic" % "0.9.24" % "compile" //LGPL 2.1 val log4j_over_slf4j = "org.slf4j" % "log4j-over-slf4j" % "1.6.1" // if you are going to have any unmanaged (manually-added) jars // def baseDirectories = "lib" // def extraJars = descendents(baseDirectories,"*.jar") // override def unmanagedClasspath = super.unmanagedClasspath +++ extraJars // tasks - easy to define lazy val hi = task { println("Hello World"); None } // classpath //override def mainScalaSourcePath = "src" } 4)将上面的东西粘贴到Main: $nano ./src/main/scala/Main.scala 5)我差点忘了!把它放在/src/main/resources/logback.xml中 <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} %line --- %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration> 6)$sbt 现在你应该在shell中的sbt控制台中: > update > compile > run 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |