I have been using logback for some time with monolithic java batch apps (ETL). I am a very part time jave programmer at my job (10% at most)
I now am working on an application that has two main programs but uses 90% of the same code base. So one project, two jar file artifacts.
this is my problem: When I run the first main program that is working it creates both log files and one is empty. I only want the one log file that is needed created.
I'm sure I'm making this way more complicated than it needs to be.
<configuration debug="true">
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
<!-- TODO this needs lot of changes, additions
create a logger called applogger
http://stackoverflow.com/questions/15140935/file-and-stdout-appenders-in-logback-xml
-->
<appender name="ERROREMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<!-- send just one log entry per email -->
<bufferSize>1</bufferSize>
</cyclicBufferTracker>
<smtpHost>autosmtp.richmond.edu</smtpHost>
<to>someone@somedomain.com</to>
<!-- <to>ANOTHER_EMAIL_DESTINATION</to> additional destinations are possible -->
<subject>Error in directory loader: %logger{20}</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %-30(%d{HH:mm:ss.SSS} [%M]) %-5level %-33(%C{32}) - %msg%n%n%ex%n%n</pattern>
</layout>
</appender>
<appender name="ERROREMAILPEOPLE" class="ch.qos.logback.classic.net.SMTPAppender">
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<!-- send just one log entry per email -->
<bufferSize>1</bufferSize>
</cyclicBufferTracker>
<smtpHost>autosmtp.richmond.edu</smtpHost>
<to>someone@somedomain.com</to>
<!-- <to>ANOTHER_EMAIL_DESTINATION</to> additional destinations are possible -->
<subject>Error in People2Xml: %logger{20}</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %-30(%d{HH:mm:ss.SSS} [%M]) %-5level %-33(%C{32}) - %msg%n%n%ex%n%n</pattern>
</layout>
</appender>
<appender name="ERROREMAILPOSITION" class="ch.qos.logback.classic.net.SMTPAppender">
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<bufferSize>1</bufferSize>
</cyclicBufferTracker>
<smtpHost>autosmtp.richmond.edu</smtpHost>
<to>someone@somedomain.com</to>
<subject>Error in Position2Xml: %logger{20}</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %-30(%d{HH:mm:ss.SSS} [%M]) %-5level %-33(%C{32}) - %msg%n%n%ex%n%n</pattern>
</layout>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%-40(%d{HH:mm:ss.SSS} [%M]) %-5level %-36(%C{32}) - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILEPEOPLE" class="ch.qos.logback.core.FileAppender">
<file>/somepath/logs/people_${bySecond}.log</file>
<append>true</append>
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%-40(%d{HH:mm:ss.SSS} [%M]) %-5level %-36(%C{32}) - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILEPOSITION" class="ch.qos.logback.core.FileAppender">
<file>/somepath/logs/position_${bySecond}.log</file>
<append>true</append>
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%-40(%d{HH:mm:ss.SSS} [%M]) %-5level %-36(%C{32}) - %msg%n</pattern>
</encoder>
</appender>
<!-- suppress apache ldap info log messages -->
<logger name="org.apache" level="warn" />
<logger name="Error" level="error">
<appender-ref ref="ERROREMAIL" />
</logger>
<logger name="people" level="info">
<appender-ref ref="FILEPEOPLE" />
<appender-ref ref="ERROREMAIL" />
</logger>
<logger name="position" level="info">
<appender-ref ref="FILEPOSITION" />
<appender-ref ref="ERROREMAIL" />
</logger>
<logger name="peopleerror" level="info">
<appender-ref ref="ERROREMAILPEOPLE" />
</logger>
<logger name="positionerror" level="info">
<appender-ref ref="ERROREMAILPOSITION" />
</logger>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>