LogbackとはLog4jの後継的な位置づけの
ロギングライブラリです

Log4jと同じことができるのですが
ログの設定ファイルに下記内容を追記すると
アプリを停止することなく
ログ設定の変更内容を反映することができます

本番運用中におかしなエラーが発生した際などに
一時的にログ出力レベルをDEBUGにする
なんてことがアプリを停止することなくできるわけです

logback.xml(ログ設定ファイル)
<configuration scan="true" scanPeriod="30 minutes">
<!-- コンソール出力 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-4relative [%thread] %-5level - %msg%n</pattern>
</encoder>
</appender>
<!-- ファイル出力 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>C:/tmp/logback_sample.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logback_sample.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<!-- 各Loggerの設定 -->
<logger name="sample">
<level value="INFO" />
<appender-ref ref="FILE" />
</logger>
<!-- 共通設定 -->
<root>
<level value="DEBUG" />
<appender-ref ref="STDOUT" />
</root>
</configuration>

configurationタグのscan属性にtrueを設定
scanPeriodでログ設定ファイルの再読み込みの間隔を指定
上記例では30分間隔で設定ファイルを再読み込みします

scanPeriodで設定できる時間の単位は下記のとおり
milliseconds:ミリ秒
seconds:秒
minutes:分
hours:時

細かいパフォーマンスは計ってないのですが
現在担当しているシステムでは30分間隔で
再読み込みさせてます
秒間数リクエストのシステムですが今のところ
パフォーマンスには影響なさそうです

LogbackはSLF4Jを使用することで
Log4jとも共存できるらしいので既存システムへの導入も楽にできそうですね