2016-05-04 4 views
7

मैं एक appender logback के लिए ElasticSearch में लिखा था और लॉग बचाने तो यह appender logback.xml में जोड़ने के लिए है। मैंने इसे एक आवेदन में लागू किया और मुझे ईएस से लॉग मिला।logback: [एनकोडर] के लिए लागू नहीं कार्रवाई, वर्तमान ElementPath [[विन्यास] [appender] [एनकोडर]]

लेकिन जब मैंने उसे एक अन्य आवेदन में लागू होते हैं, logback निम्न त्रुटि दिखाता है:

16:18:26,040 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [com.dcf.iqunxing.fx.dashcam.agent.log.appender.logback.DashcamAppender] 
16:18:26,062 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [dashcamAppender] 
16:18:26,078 |-ERROR in [email protected]:12 - no applicable action for [encoder], current ElementPath is [[configuration][appender][encoder]] 
16:18:26,080 |-ERROR in [email protected]:13 - no applicable action for [Pattern], current ElementPath is [[configuration][appender][encoder][Pattern]] 

मेरे logback.xml है:

... 
<appender name="dashcamAppender" 
     class="com.dcf.iqunxing.fx.dashcam.agent.log.appender.logback.DashcamAppender"> 
    <encoder> 
     <Pattern>.%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern> 
    </encoder> 
    <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
     <level>TRACE</level> 
    </filter> 
</appender> 
... 

कुछ कार्रवाई खोया (या उन्हें शामिल करने का तरीका) के लिए logback?

उत्तर

2

यह संभव है अपने कस्टम appender की वजह से।

extends AppenderBase<ILoggingEvent> 

यह AppenderBase इसके अंदर एनकोडर/पैटर्न को लागू नहीं करता है - लेकिन अगर आप कंसोल पर देखने appender यह एक उन वस्तुओं के रूप में है कि फैली हुई है।

इस प्रकार यह अपने ऑबजेक्ट पर एनकोडर/पैटर्न मैप नहीं कर सकते।

बस सब togeher appender से उन्हें हटा दें।

... 
<appender name="dashcamAppender" class="com.dcf.iqunxing.fx.dashcam.agent.log.appender.logback.DashcamAppender"> 
    <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
     <level>TRACE</level> 
    </filter> 
</appender> 
... 

यदि आप उनका उपयोग करना चाहते हैं, तो आपको उन्हें लागू करने के लिए अपनी एपेंडर क्लास को बदलना होगा।

संबंधित मुद्दे