filePattern=“
L
O
G
H
O
M
E
/
{LOG_HOME}/
LOGHOME/{App}-%d{yyyy-MM-dd-HH-mm-ss}.log”
上面文件名称部分需要看:{yyyy-MM-dd-HH-mm-ss}.log,这个文件名称是用秒命名的。
再看: 意思是文件达到2M就会生成下一个文件。
我们想一下,假设现在生成了一个文件:2022-09-07-03.log , 这个日志文件看起来没有任何问题,但是注意因为我们设置了2M滚动一次,你想一下假设一秒内打印的日志超过2M会生什么,总不能把这一秒的数据放入下一秒的文件中吧,所以 log4j2默认会覆盖掉。 为了解决这个问题可以给文件名添加一个自增数量%i,
即:"
L
O
G
H
O
M
E
/
{LOG_HOME}/
LOGHOME/{App}-%d{yyyy-MM-dd-HH-mm-ss}.log"改成 “
L
O
G
H
O
M
E
/
{LOG_HOME}/
LOGHOME/{App}-%d{yyyy-MM-dd-HH-mm-ss}-%i.log”, 这样在一秒内正常根据2M滚动, 多出来的数据会生成新的文件:
比如:2022-09-07-03-1.log, 2022-09-07-0-2.log 但是这个自增的数量也有限, max表示最多到达: 2022-09-07-02-10.log. 而后依旧会覆盖,生产中我们可以事先测试这个数量一般不会有问题。
请注意文件名称和滚动方式, 二者的结合会产生一些意想不到的行为,平时一定要尤其注意。