Details
-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
1.0.13
-
None
-
Ubuntu 12.04, logback classic/core 1.0.13, janino 2.6.1, javax.mail 1.4
Description
I am trying to use Janino condition to instantiate default Logback SMTP appender if and only if javax.mail is present is application classpath. Here is my simple config file for that purposes:
<property name="common.log.date.format" value="{MM/dd HH:mm:ss:SSS}" />
<property name="common.log.conversionpattern" value="[%d${common.log.date.format}] [%t] [%c{0}] [%p]: %m%n" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${common.log.conversionpattern}</pattern>
</encoder>
</appender>
<!-- Should be true if javax.mail jar exists in claspath -->
<define name="JAVAX_MAIL_EXISTS_IN_CLASSPATH" class="ch.qos.logback.core.property.ResourceExistsPropertyDefiner">
<resource>javax.mail.Authenticator</resource>
</define>
<appender name="Property value is ${JAVAX_MAIL_EXISTS_IN_CLASSPATH}!!!" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${common.log.conversionpattern}</pattern>
</encoder>
</appender>
<if condition='"true".equals(property("JAVAX_MAIL_EXISTS_IN_CLASSPATH"))'>
<then>
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>webmail.reveredata.com</smtpHost>
<to>dyaroslavtsev@reveredata.com</to>
<from>noreply@reveredata.com</from>
<subject>[${app.name}] [%marker] [%p]</subject>
<asynchronousSending>false</asynchronousSending>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${common.log.conversionpattern}</pattern>
</layout>
</appender>
<root level="ERROR">
<appender-ref ref="EMAIL" />
</root>
</then>
</if>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
There is no convenient way to write JAVAX_MAIL_EXISTS_IN_CLASSPATH state to sysout, so I am using an additional ConsoleAppender and '-Dlogback.debug=true' option to see value of my JAVAX_MAIL_EXISTS_IN_CLASSPATH variable.
It is always false, regardless if javax.mail jar exist in classpath, or not.
My environment is: Ubuntu 12.04, logback classic/core 1.0.13, Janino 2.6.1, javax.mail 1.4.