簡體   English   中英

Java記錄器執行方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM