加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala记录行号 – slf4s / slf4j?

发布时间:2020-12-16 19:21:55 所属栏目:安全 来源:网络整理
导读:更新:已解决! 请参阅下面我添加的答案 有没有人知道是否有办法将实际行号输出到控制台?我在这里试图进入Scala,但是由于我无法获得这样的基本东西,所以很难得到很多. 我已经设置了slf4s来包装slf4j – log4j – jcl-over-slf4j.问题是我得到的行号根本不匹
更新:已解决!
请参阅下面我添加的答案

有没有人知道是否有办法将实际行号输出到控制台?我在这里试图进入Scala,但是由于我无法获得这样的基本东西,所以很难得到很多.

我已经设置了slf4s来包装slf4j – log4j – jcl-over-slf4j.问题是我得到的行号根本不匹配.比Scala类甚至包含的行数要高得多.这是因为行号实际上是Java中间行号吗?

是否有任何简单的方法来设置满足这些要求的日志记录?:

>可互操作,兼容java和&斯卡拉
>与log4j一样容易更改单个包的日志记录级别
>提供准确的行号.

谢谢!

杰米

解决方法

我发现 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 sbt-launcher.jar并把它放在像/ opt /的地方
我用的是“sbt-launch-0.7.5.RC0.jar

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

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读