logback原始碼閱讀 Appender 四

2022-03-17 06:25:36 字數 3410 閱讀 3303

下面我們舉例看其中 乙個如果我們有定製化需求可以參考實現定製

呼叫時機在解析標籤處 分別呼叫start 和end 

/**

* 啟動worker

*/public

void

start()

else

if (this.queuesize < 1)

else

this.addinfo("setting discardingthreshold to " + this

.discardingthreshold);

this.worker.setdaemon(true

);

.getname());

//重寫了父類的start 所以保證不破壞父類邏輯 所以呼叫父類start

super

.start();

//this

.worker.start();//這裡是呼叫執行緒的start}}

}

public

void

end(interpretationcontext ec, string name)

object o =ec.peekobject();

if (o != this

} else}}

class worker extends

thread

public

void

run()

catch

(interruptedexception var5)

}this.addinfo("worker thread will flush remaining events before exiting. ");

//以下是當started關閉 不接受訊息 但是還是要消費完

iterator i$ =parent.blockingqueue.iterator();

while

(i$.hasnext())

// }

}

public

int

int size = 0;

//

for(int i = 0; i < len; ++i)

return

size;

}

private threadlocalguard = new

threadlocal();

public

void

//防止乙個執行緒同時進入多個吧。。。

if (!boolean.true.equals(this

.guard.get()))

//<5>

模板模式化 由子類實現

this

return

; }

if (this.statusrepeatcount++ < 3)

} catch

(exception var6)

return

; }

finally}}

protected

abstract

protected

void

if (this

.isstarted())

}

protected

void

if (this

.isstarted())

//encoder具體檢視

byte bytearray = this

.encoder.encode(event);

this

.writebytes(bytearray);

} catch

(ioexception var3) }}

private

void writebytes(byte bytearray) throws

ioexception

} finally}}

logback原始碼閱讀 根據原始碼學擴充套件點 七

原始碼 點選跳轉 1.xml定義 xml version 1.0 encoding utf 8 configuration property name charset value utf 8 name class encoder pattern p d t logger line n m n n p...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...