我正在尝试定义一个logback.xml,它在PROD环境中将loglevel设置为INFO,所有其他环境都设置为DEBUG。 因此,我们有一个环境变量ENV,在PROD环境中设置为“PROD”。 我的logback.xml如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{"yyyy-MM-dd'T'HH:mm:ss.SSSZ"} [%thread] %-5level %logger %mdc - %msg%n</pattern>
</encoder>
</appender>
<appender name="aiAppender" class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender" />
<!-- Choose INFO level on PROD, DEBUG on other environments -->
<property name="logLevel" value="DEBUG" />
<if condition='property("ENV").contains("PROD")'>
<then>
<property name="logLevel" value="INFO" />
</then>
</if>
<root level="${logLevel}">
<appender-ref ref="STDOUT" />
<appender-ref ref="aiAppender" />
</root>
</configuration>
如果ENV设置为PROD,它应该将属性“logLevel”设置为INFO。不幸的是,这不起作用 - 无论我是在环境级别(windows:SET ENV = PROD)上设置属性还是在带有-D的java vm级别设置属性。
知道我本可以做错什么吗?
更新:我发现根据文档,janino库必须在类路径上。添加一个并查看日志也证明这似乎是问题所在:
09:50:06,127 |-ERROR in ch.qos.logback.core.joran.conditional.IfAction - Could not find Janino library on the class path. Skipping conditional processing.
不幸的是,即使我将它添加到我的gradle依赖项中,此消息仍会出现。这是我的build.gradle:
apply plugin: 'java-library'
apply plugin: 'maven'
sourceCompatibility = 1.8
dependencies {
// https://mvnrepository.com/artifact/javax/javaee-api
compileOnly group: 'javax', name: 'javaee-api', version: '7.0'
api group: 'com.microsoft.azure', name: 'applicationinsights-core', version: '1.0.7'
api group: 'com.microsoft.azure', name: 'applicationinsights-web', version: '1.0.7'
api group: 'com.microsoft.azure', name: 'applicationinsights-logging-logback', version: '1.0.7'
api group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
api group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
api group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
api group: 'org.codehaus.janino', name: 'janino', version: '3.0.6'
api group: 'org.codehaus.janino', name: 'commons-compiler', version: '3.0.6'
testImplementation group: 'junit', name: 'junit', version: '4.11'
testImplementation "org.mockito:mockito-core:2.+"
}
知道为什么还没有在类路径中找到janino?
答案 0 :(得分:0)
如果您具有登录版本1.2.3
,则需要janino版本3.1.2
。另外,对我来说,compile
还不够。
implementation group: 'org.codehaus.janino', name: 'janino', version: '3.1.2'
旁注:条件实际上并不需要commons-compiler
。