java - 执行 "sbt run"时,没有通过 scalalogging 显示任何信息消息

标签 java logging sbt slf4j log4j2

我有一个 SBT 项目,其中包含以下 log4j.properties 文件(位于 src/main/resources 中):

log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

build.sbt

 "com.typesafe" %% "scalalogging-log4j" % "1.1.0",
 "org.slf4j" % "slf4j-log4j12" % "1.7.5",
 "org.apache.logging.log4j" % "log4j-core" % "2.0-beta4",
 "org.apache.logging.log4j" % "log4j-api" % "2.0-beta4"

执行sbt run时,以下代码片段无法向控制台输出任何内容:

 class Retrieval extends Logging {
   def get(userID: Int): Seq[String] = {
     logger.info("test")
   }
 }

更改为 logging.error("test") 效果很好。知道发生了什么吗?

最佳答案

您正在使用 log4j2(顺便说一句,我建议升级到更新的 log4j-2.0-RC1),但您的配置适用于旧版 log4j-1.2。

Log4j2 正在查找 log4j2.xml 配置文件并忽略任何 log4j.xml 或 log4j.properties 文件。如果 log4j2 找不到配置文件,它将使用默认配置,仅将错误级别的消息记录到控制台。我认为这就是正在发生的事情。

要解决此问题,请创建以下名为 log4j2.xml 的文件,并将其放入类路径中。

<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="STDOUT"/>
    </Root>
  </Loggers>
</Configuration>

关于java - 执行 "sbt run"时,没有通过 scalalogging 显示任何信息消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22101744/

相关文章:

scala - 在 SBT 中处理多个运行目标的最佳方法是什么?

java - Sbt RootProject 或 ProjectRef 不下载 github 项目内容

java - WebSphere中LinkageError引起的ServiceConfigurationError

java - Kotlin 使用的 Java 库中的泛型和继承

python - 记录注册用户的操作

logging - 在日志应用程序 block 中将日期添加到日志文件名

file - 在类里面保存文件或 channel 的好习惯

java - EnumType foo : How do I write foo. changeme()?

java - Scanner 类中的 nextLine 方法不接受输入(Java)

sbt - 使用宏天堂并与 2.12/2.13 交叉编译