मैं log4j के JDBCAppender का उपयोग करके डेटाबेस में अपने एप्लिकेशन के लॉग लॉग कर रहा हूं। किसी बिंदु पर, मुझे "MySQLSyntaxErrorException" मिलता है और मैं इसका कारण जानने का प्रयास कर रहा हूं।

यहाँ मेरी log4j.properties फ़ाइल है;

# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:mysql://.../...
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=...
log4j.appender.DB.password=...
log4j.appender.DB.sql=INSERT INTO logs (EventDate,Level,Logger,Location,Message) VALUES( '%d{yyyy-MM-dd HH:mm:ss.SSS}', '%p' , '%c' ,'Test', '%m')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

और यहाँ मेरी मेज है;

enter image description here

जब मैं अपना प्रोजेक्ट चलाता हूं तो मुझे निम्न त्रुटि मिल रही है;

log4j:ERROR sql को उत्साहित करने में विफल com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: आपको अपने SQL सिंटैक्स में कोई त्रुटि है; '' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने MySQL सर्वर संस्करण से संबंधित मैनुअल की जाँच करें।

अगर मैं '%m' पैरामीटर को किसी और चीज से बदलता हूं, तो कोई अपवाद नहीं होता है और लॉग सफलतापूर्वक डीबी में डाला जाता है। इसलिए, मुझे लगता है कि समस्या यहां संदेश के साथ ही है, लेकिन मुझे यह पता नहीं चल रहा है कि कौन सा संदेश इसका कारण बन रहा है क्योंकि यह एक वास्तविक बड़ी परियोजना है।

क्या कोई तरीका है जिससे मैं वास्तविक SQL कथन देख सकता हूँ? या क्या कुछ और है जो मैं इसे और अधिक डीबग करने के लिए कर सकता हूं?

2
josh 30 नवम्बर 2018, 11:53

1 उत्तर

सबसे बढ़िया उत्तर

यह तब हो सकता है जब लॉग संदेश %m में ही ' वर्ण हो। क्या आपने ' को बदलने की कोशिश की

INSERT INTO logs (EventDate,Level,Logger,Location,Message) VALUES( 'date_here', 'INFO' , 'com.test.Test' ,'loc', REPLACE('%m','\'','') );
1
Dushmantha 30 नवम्बर 2018, 10:12