标签: logback

如何在logback auto-load logback.xml之前定义logback变量/属性?

我的公司有一个环境管理工具,使您能够以编程方式在Java中查找环境中的属性.我想利用这个工具来配置logback.例如,假设我有一个logback.xml,如下所示(特别是文件appender部分):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- console appender -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd/HH:mm:ss.SSS} [%thread] %-5level %logger{20}: %msg%n</pattern>
        </encoder>
    </appender>

    <!-- file appender -->
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>${LOG_FILE:-/default/log/file/path</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd/HH:mm:ss.SSS} [%thread] %-5level %logger{20}: %msg%n</pattern>
        </encoder>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,我想LOG_FILE从环境(或OS,如果你愿意)查找属性,并在logback加载logback.xml之前将其传递给logback,以便它知道值LOG_FILE.那么,我该如何实现呢?顺便说一句,我知道如何以编程方式定义文件追加器,但这不是我想要的.

非常感谢你.

java logback

23
推荐指数
3
解决办法
4万
查看次数

GraalVM(native-image)无法编译logback依赖项

我正在使用当前版本的社区版:GraalVM/native-image 22.1.0

我的项目依赖于日志框架 logback (版本 1.2.3)

如果我想用 graalVM 编译我的“一体式”jar,本机映像会抱怨:

错误:java.util.concurrent.ExecutionException:com.oracle.graal.pointsto.constraints.UnsupportedFeatureException:映像堆中不允许存在 ch.qos.logback.classic.Logger 的实例,因为此类应在映像运行时初始化。要查看该对象是如何实例化的,请使用 --trace-object-instantiation=ch.qos.logback.classic.Logger。

我尝试了许多不同的设置排列,例如--initialize-at-run-time=\<complete list of logback classes\>--initialize-at-run-time

我尝试使用以下命令生成反射配置文件

java -agentlib:native-image-agent=config-output-dir=META-INF/native-image -jar build/myjar-all.jar

并将其添加到配置文件中

-H:ReflectionConfigurationFiles=reflect-config.json

但没有成功。总是收到与 logback 相关的不同错误消息。

所以我的问题是:

有人之前用 graalvm 成功编译过 logback 吗?

java logback graalvm graalvm-native-image

23
推荐指数
1
解决办法
6681
查看次数

如何在Java中以编程方式更改logback日志级别?

我有一些性能单元测试会创建一些我不太关心并且实际上影响性能的不合理数量的日志.我可以以某种方式仅在单元测试的Before方法中提高logback中的日志级别(并在After中恢复)吗?或者有更好的解决方法吗?

java logback

22
推荐指数
1
解决办法
2万
查看次数

如何配置logback以跳过来自org.package.*的日志消息,所有级别都低于WARN?

如何配置logback不会记录org.package包中记录器及其子包的消息,除非它们的级别是WARN或ERROR?

java logging logback

21
推荐指数
2
解决办法
2万
查看次数

如何在运行时更改单个记录器的日志级别?

我想阅读spring属性并基于此属性更改某些包的日志级别(不适用于root logger).如何使用logback实现它?

java spring logback slf4j

21
推荐指数
1
解决办法
2万
查看次数

对于严格的ISO 8601合规性,使Logback在日期和时间之间包含"%"格式的"%"

默认情况下,Logback编码器使用类似于ISO 8601标准的日期格式.但它在日期和时间部分之间缺少"T".这使得解析更容易,并且是标准所要求的(除非私人方达成一致).T

是否有一些技巧可以让Logback包含T

这个…

2006-10-20T14:06:49,812
Run Code Online (Sandbox Code Playgroud)

而不是这个......

2006-10-20 14:06:49,812
Run Code Online (Sandbox Code Playgroud)

我想我可以在添加"T"时重新创建整个格式,但我想知道是否有更简单的方法.

java logback

21
推荐指数
1
解决办法
2万
查看次数

Lambda支持SLF4J API

在Log4j最新的API中,我们有Lambda支持,可以轻松管理Debug选项.

例:

logger.debug("This {} and {} with {} ", 
  () -> this, () -> that, () -> compute());
Run Code Online (Sandbox Code Playgroud)

但是对于slf4j/logback,有任何选项可以启用lambda,如上所述.那么请让我知道语法.

java logback slf4j

21
推荐指数
4
解决办法
7586
查看次数

带有LogBack的SpringBoot创建LOG_PATH_IS_UNDEFINED文件夹

我正在使用带有LogBack的SpringBoot并在我的yml文件中使用以下配置:

logging:
    path: C:/var/log/pincode
Run Code Online (Sandbox Code Playgroud)

该logging.path春季环境变量被转移到LOG_PATH环境变量和日志文件被放置在正确的地方,但也有一个叫做目录LOG_PATH_IS_UNDEFINED在我的项目的根目录下创建的.

这似乎是由SpringBoot用于配置LogBack及其Environment变量的不同阶段引起的.

17:29:21,325 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
17:29:21,337 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern LOG_PATH_IS_UNDEFINED/catalina.out.%d{yyyy-MM-dd} for the active file
17:29:21,340 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'LOG_PATH_IS_UNDEFINED/catalina.out.%d{yyyy-MM-dd}'.
17:29:21,340 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
17:29:21,343 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Mon Aug 11 17:24:07 BRT 2014
17:29:21,346 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[serverConsole] - Active log file name: LOG_PATH_IS_UNDEFINED/catalina.out …
Run Code Online (Sandbox Code Playgroud)

spring logback spring-boot

20
推荐指数
4
解决办法
4万
查看次数

IntelliJ 14.1以xml记录输出

我们使用slf4j和logback,当从命令行运行时,它仍然按预期工作,但在intellij中它是不同的.

在intellij中使用gradle运行junit测试,日志输出采用以下xml格式:

<ijLog><event type='afterSuite'><ijLogEol/>
  <test id='root' parentId=''><ijLogEol/>
    <descriptor name='Test Run' className='' /><ijLogEol/>
    <result resultType='SUCCESS' startTime='1427264227574' endTime='1427264315052'><ijLogEol/>
      <failureType>error</failureType><ijLogEol/>
    </result><ijLogEol/>
  </test><ijLogEol/>
</event></ijLog>
Run Code Online (Sandbox Code Playgroud)

我不希望IDE改变任何东西,只需使用我们提供的日志记录.这种用法很好,但自14.1以来我就遇到了这个问题.

java intellij-idea logback slf4j gradle

20
推荐指数
3
解决办法
1859
查看次数

如何使用testng,slf4s和logback在scala单元测试中进行日志记录

我是Scala的新手,并不熟悉Java的最新发展,所以我认为我认为这是一个基本问题.

我正在编写一些Scala代码,并使用ScalaTest和TestNG使用测试夹具进行测试.正在测试的代码使用slf4s执行其日志记录,由logback支持.

在我的'build.sbt'文件中,我有我需要的所有库的依赖项:

scalaVersion := "2.9.1"

// Add test dependencies on scalatest and testng

libraryDependencies ++= Seq("org.scalatest" %% "scalatest" % "1.6.1" % "test", "org.testng" % "testng" % "6.1.1" % "test")

// Use the slf4j logging facade for logging
libraryDependencies += "org.slf4j" % "slf4j-api" % "1.6.3"

//use the slf4j connectors to implement the JCL logging facade in terms of slf4j (which in turn is implemented in terms of logback)
//confused yet?
libraryDependencies += "org.slf4j" % "jcl-over-slf4j" % "1.6.3"

//use logback for …
Run Code Online (Sandbox Code Playgroud)

testng scala logback slf4j

19
推荐指数
1
解决办法
1万
查看次数