[英]Java logger executing method
我編寫了如下方法來檢查記錄器的工作功能,
package test;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
public class test1{
private static Logger logger = Logger.getLogger(test1.class);
public static void main(String args[])
{
System.out.println("time 1 "+System.currentTimeMillis());
logger.log(Level.INFO,"Eror "+System.currentTimeMillis());
System.out.println("time 2 "+System.currentTimeMillis());
logger.log(Level.INFO,"Eror "+System.currentTimeMillis());
logger.log(Level.INFO,"Eror "+System.currentTimeMillis());
logger.log(Level.INFO,"Eror "+System.currentTimeMillis());
logger.log(Level.INFO,"Eror "+System.currentTimeMillis());
logger.log(Level.INFO,"Eror "+System.currentTimeMillis());
System.out.println("time 3 "+System.currentTimeMillis());
System.out.println("time 4 "+System.currentTimeMillis());
System.out.println("time 5 "+System.currentTimeMillis());
}
}
我得到的輸出如下
time 1 1367325027239
time 2 1367325027247
Apr 30, 2013 6:00:27 PM test.test1 main
INFO: Eror 1367325027239
Apr 30, 2013 6:00:27 PM test.test1 main
INFO: Eror 1367325027247
Apr 30, 2013 6:00:27 PM test.test1 main
INFO: Eror 1367325027248
Apr 30, 2013 6:00:27 PM test.test1 main
INFO: Eror 1367325027249
Apr 30, 2013 6:00:27 PM test.test1 main
INFO: Eror 1367325027250
Apr 30, 2013 6:00:27 PM test.test1 main
INFO: Eror 1367325027250
time 3 1367325027251
time 4 1367325027251
time 5 1367325027251
我的問題是,程序控制將等到記錄器完成其過程時
(即根據配置將消息寫入日志文件),
否則記錄器將控件返回到調用代碼后將獨立執行。
(從上面的代碼可以看出,記錄器需要一些時間,但是我認為在這段時間內無法完成文件操作)
是的,日志記錄會“阻止”程序流的執行,直到日志記錄完成為止。 您可以使用visualvm分析有無記錄器的已用線程數,以查看記錄器是否可以異步實現。 不要被每次啟動的守護進程線程煩惱。
通常,記錄器和所有其他文件寫入器都使用緩沖區來加快寫入速度。 通過將內容寫入緩沖區並稍后將其刷新到目標位置,可以節省執行時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.