Spring Integration: การบันทึกโดยใช้ logging-channel-adapter + log4j

ฉันกำลังพยายามบันทึกรายละเอียดบางอย่างในฐานข้อมูลโดยใช้ log4j ฉันได้กำหนดค่าอะแดปเตอร์ช่องบันทึกเป็นตัวดักฟังแล้ว

คนตัดไม้ที่จำเป็นคือ dbappender แต่สิ่งเดียวกันนั้นไม่ทำงาน

สปริง-integration.xml

<int:wire-tap channel="logChannel"/>
<int:logging-channel-adapter id="logChannel" level="INFO" logger-name="AUDIT_the.details" />

log4j.xml

<logger name="AUDIT_the.details">
        <level value="INFO" />
        <appender-ref ref="asyncAppender" />
    </logger>

    <appender name="asyncAppender" class="org.apache.log4j.AsyncAppender">
        <param name="blocking" value="false" />
        <appender-ref ref="dbAppender" />
    </appender>

    <appender name="dbAppender" class="LoggerTemplate">
        <param name="driver" value="oracle.jdbc.OracleDriver" />
        <param name="sql"
            value="SQL_QUERY" />
        <param name="Threshold" value="info" />
    </appender>

person Rahul    schedule 08.05.2015    source แหล่งที่มา
comment
ถ้าคุณบอกว่ามันไม่ได้ผล อย่างน้อยคุณควรชี้ให้เห็นว่ามันอยู่ที่ไหน คุณยังไม่ได้ลองเข้าสู่ระบบคอนโซลอย่างง่าย ๆ ใช่ไหม? หรือมันทำงานอย่างไรกับ direct appender โดยข้าม AsyncAppender ? ข้อมูลไม่เพียงพอที่จะเข้าใจปัญหา... และ... คืออะไร LoggerTemplate ?   -  person Artem Bilan    schedule 11.05.2015


คำตอบ (1)


คุณได้กำหนดค่าช่องดักฟังแล้ว แต่คุณต้องใส่สิ่งนั้นในแท็ก interceptor สำหรับช่องที่คุณต้องการดักฟังด้วย ไม่แน่ใจว่าคุณได้ดำเนินการดังกล่าวแล้ว เนื่องจากขาดหายไปในโพสต์ของคุณหรือไม่ ด้านล่างนี้เป็นตัวอย่างหนึ่ง

<integration:channel id="mydbchannel-to-intercept">
    <integration:interceptors>
        <int:wire-tap channel="logChannel"/>
    </integration:interceptors>
</integration:channel>
person Sarfaraz Khan    schedule 17.06.2015