在應用層用 ConcurrentHashMap 存儲待寫入數據,試圖加鎖同步 → 複雜且性能差。
<!-- log4j.properties -->
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.url=jdbc:mysql://localhost:3306/logdb
log4j.appender.DB.user=root
log4j.appender.DB.password=123456
log4j.appender.DB.sql=INSERT INTO logs (session_id, create_time, context, close_time) VALUES ('%X{sessionId}', '%X{createTime}', '%X{context}', '%X{closeTime}')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
DBCP、HikariCP),數據庫層面處理並發寫入。可自定義 Appender 繼承 AppenderSkeleton,緩衝一定條數後批量 executeBatch,但單條寫入通常已足夠高效。