logback <if> 标签配置问题

   <if condition='property("HOSTNAME").contains("cheng")'>
        <then>
            <logger name="java.sql.Connection" level="DEBUG" />
            <logger name="java.sql.Statement" level="DEBUG" />
            <logger name="java.sql.PreparedStatement" level="DEBUG" />

            <logger name="com.qccr.superconfig.dal.dao"  additivity="false">
                <level value="DEBUG" />
                <appender-ref ref="STDOUT" />
                <appender-ref ref="integration" />
                <appender-ref ref="error" />
            </logger>
       </then>
    </if>
在logback中使用以上配置,但没有起作用,去除判断则可以,但是调试的时候发现HOSTNAME是有的
阅读 10k
2 个回答
新手上路,请多包涵

不起作用说明logback内部在解析配置文件(logback.xml)出错,请将configuration标签的debug属性设置为true,这样可以把logback内部日志信息打印出来,关注ERROR信息。
我遇到这个问题是因为没有janino库导致无法解析condition表达式。在添加janino的依赖后就可以正常解析了。

<dependency>
    <groupId>org.codehaus.janino</groupId>
    <artifactId>janino</artifactId>
    <version>2.6.1</version>
</dependency>

HOSTNAME中是否确实有cheng这个字符串,你的语法是没有问题的,就看是否真正的满足if条件了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题