Eu realmente não acho que você conseguirá fazer o que quiser com o logrotate sem alguns comandos externos. Além disso, o padrão /var/log/foo/foo.log.*
trataria cada arquivo individual como se fosse um log separado a ser rotacionado, não como um conjunto de arquivos girados.
man logrotate Please use wildcards with caution. If you specify *, logrotate will rotate all files, including previously rotated ones.
De qualquer forma, talvez algo assim? Basta definir sua condição de rotação que nunca será alcançada, já que o log4j já está manipulando a rotação parcialmente. Em seguida, coloque o restante em um script prerotate
?
/var/log/foo/foo.log {
size 100g # something big that will never be reached/rotated since log4j does this.
missingok
notifempty
# delete the other logs over 7 days old
prerotate
find /var/log/foo/ -name 'foo.log.*' -mtime +7 -delete
nice gzip /var/log/foo/foo.log.*
endscript
}