因为多个线程同时写日志到同一个文件时。产生日志的时间和实际写入磁盘的时间不是一邗锒凳审个原子操作,一个线程T1在t1时刻产生了日志,另一个线程T2在t2时刻也产生了一个日志,但是由于一些原因导致线程T1发生阻塞,而线程T2并没有发生阻塞。
导致日志时间错乱的原因
由于一些原因导致线程T1发生阻塞,并没有把日志即刻写入到文件中,而线程T2并没有发生阻塞,即刻就把日志信息写入到了文件中,这种情况的存在就会导致不同线程的日志事件时间序列错乱,所谓同步写日志,指的是在输出日志的地方将日志即时写入到文件中去。
这种同步日志的实现方式,一般用于低频写日志的软件系统中,所以可以认为这种多线程同时写日志到同一个文件中是可行的,所谓异步写日志就是通过一些线程同步技术将日志先暂存下来,然后再通过一个或多个专门的日志写入线程将这些缓存的日志写入到磁盘中。