У меня есть приложение на сервере Java, для которого я записываю все общие данные в server.log и каждого отдельного клиента в свой собственный файл hostname.log. Я хочу поместить файлы hostname.log в другой каталог, который идеально подходит для server.log, поскольку существуют тысячи файлов hostname.log.
Это конфиг, который я сейчас использую:
<appender name="SiftAppender" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>descriminatorid</key>
<defaultValue>server</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${descriminatorid}" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${cmb.log.dir}/${descriminatorid}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${cmb.log.dir}/archive/${descriminatorid}.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- keep ${maxbackupindex} days' worth of history capped at ${maxfilesize} total size -->
<maxHistory>${cmb.log.maxbackupindex}</maxHistory>
<totalSizeCap>${cmb.log.maxfilesize}</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %msg%n</pattern>
</encoder>
</appender>
</sift>
</appender>
Эта конфигурация записывает все в $ cmb.log.dir. То, что я хотел бы, что-то вроде этого:
Server logs: $cmb.log.dir/server.log
Client logs: $cmb.log.dir/client/${descriminatorid}.log
Или еще лучше было бы:
Client logs: $cmb.log.dir/client/${firstLetter}/${descriminatorid}.log
где $ {firstLetter} - первая буква $ descriminitorid. Таким образом, журналы будут распределяться в более масштабируемой иерархии.