close

  2006年委天津開發個LoggerProxy,按class名產出該class的Log檔,也加入可以指定某package以下共用同一個log檔的功能。這在Web Server上運作沒問題,卻在Java Main出現Lock現象。若同A Class hold這個log檔,同package的其他class無法再寫入同一個log檔,是因為使用了不同的Logger Instance。解法是想辦法讓每個class裡的Logger共用同一個Logger的instance,卻衍生一個問題,就是使用%c去顯示package class full name時,該class name是取決於當初Logger.getLogger(clazz)中,所傳的clazz的class name。後來意外發現Logger另一個特性:假設Logger的變數為loggerA,loggerA的%c就是當初傳的clazz(假設名為com.A),若想在%c顯示自己的com.B時,只需按如下方式取得:

  Logger loggerB = loggerA.getLogger("com.B");   // 因為getLogger是static method,透過loggerA.getLogger,loggerB就能得到loggerA屬性

arrow
arrow
    全站熱搜

    Jemmy 發表在 痞客邦 留言(0) 人氣()