1.appender
1.什么是appender

2.AppenderBase
public synchronized void doAppend(E eventObject) { // prevent re-entry. if (guard) { return; } try { guard = true; if (!this.started) { if (statusRepeatCount++ < ALLOWED_REPEATS) { addStatus(new WarnStatus( "Attempted to append to non started appender [" + name + "].", this)); } return; } if (getFilterChainDecision(eventObject) == FilterReply.DENY) { return; } // ok, we now invoke derived class' implementation of append this.append(eventObject); } catch (Exception e) { if (exceptionCount++ < ALLOWED_REPEATS) { addError("Appender [" + name + "] failed to append.", e); } } finally { guard = false; } }
通過代碼可以知道AppenderBase類是的doAppender()是同步線程安全的;並不是所有時候都需要同步,因此當不需要同步的時候可以使用UnsynchronizedAppenderBase類。
3. logback-core
logback-core模塊是logback的基礎。下面講解一下可以直接使用的appender。
1.logback-core模塊中的appender
logback-core模塊中的appender種類:OutputStreamAppender、ConsoleAppender、FileAppender、RollingFileAppender。
你有沒有發現:logback-core中的appender的目的地都是本地啊,那有沒有可以發送到網絡上的appender呀,當然有,在logback-classic模塊中,下一節介紹。
這些appender之間的關系如下所示:
1.OutputStreamAppender講解

2.ConsoleAppender講解

這些屬性是需要配置的,因此我們可以通過在xml配置文件中的<appender>標簽中創建以屬性名為標簽名的標簽,並為這些標簽進行配置。
注意:<appender>中不同的class屬性值表明使用不同的目的地,因此會有不同的參數,從而表現出在配置文件中的標簽有所差異。
3.FileAppender講解



這些屬性是需要配置的,因此我們可以通過在xml配置文件中的<appender>標簽中創建以屬性名為標簽名的標簽,並為這些標簽進行配置。
注意:<appender>中不同的class屬性值表明使用不同的目的地,因此會有不同的參數,從而表現出在配置文件中的標簽有所差異。
4.RollingFIleAppender講解
1.實現滾動記錄原理


這些屬性是需要配置的,因此我們可以通過在xml配置文件中的<appender>標簽中創建以屬性名為標簽名的標簽,並為這些標簽進行配置。
注意:<appender>中不同的class屬性值表明使用不同的目的地,因此會有不同的參數,從而表現出在配置文件中的標簽有所差異。
1.最受歡迎的滾動策略TimeBaseRollingPolicy


下面講解一下fileNamePattern的部分值及作用:
注意:所有“\”和“/”都被解釋為目錄分隔符。任何需要的目錄都會被創建。所以你可以輕松地把記錄文件放到不同的目錄。
4.logback-classic

在logback-classic模塊中也存在一些appender,並且這些appender的目的地不是本地。下面詳細了解一下這些appender。
logback-classic模塊中的appender分類:SocketAppender、DBAppender、SMTPAppender、SyslogAppender、SiftingAppender以及基於JMS的兩種Appender(JMSTopicAppender和JMSQueueAppender,他們繼承自JMSAppenderBase類);提供了總共7種appender;另外還可以自定義appender,需要通過繼承AppenderBase來實現自定義的appender。