ทำไมเอาท์พุท SQL บนคอนโซล?
แน่นอนว่ามันมีไว้เพื่อความสะดวกในการพัฒนาและการดีบัก
หากมีปัญหาเกี่ยวกับการดำเนินการที่เกี่ยวข้องกับฐานข้อมูลเราสามารถแก้ไขปัญหาได้อย่างรวดเร็วตามคำสั่ง SQL เอาต์พุต
ข้อมูลผลลัพธ์:
[org.mybatis.spring.sqlsessionutils]-สร้าง sqlsession ใหม่
[org.mybatis.spring.sqlsessionutils] -sqlsession [org.apache.ibatis.session.defaults.defaultsqlsession@33290f98] ไม่ได้ลงทะเบียนเพื่อการซิงโครไนซ์เนื่องจากการซิงโครไนซ์ไม่ได้ใช้งาน
[org.springframework.jdbc.datasource.datasourceutils] -fetching การเชื่อมต่อ JDBC จาก DataSource
[org.mybatis.spring.transaction.springmanagedTransaction] -jdbc การเชื่อมต่อ [JDBC: mysql: //rds.aliyuncs.com: 3306/yyyy? useunicode = true & rigealencoding = UTF-8 ชื่อผู้ใช้[email protected], ตัวเชื่อมต่อ MySQL Java] จะไม่ได้รับการจัดการในฤดูใบไม้ผลิ
[datenumber.pageselect]-==> การเตรียม: เลือก x.id, date_format (x.`date`, '%y%m%d') `datestr`, x.befor_num, x.after_num, x.physician_id, y.department_id, y.clinic_id datenumber x ขวาเข้าร่วมทางกายภาพ y บน x.physician_id = y.id และ (x.`date`> =? และ x.`date` <=?) โดยที่ 1 = 1 และ y.clinic_id =? สั่งซื้อโดย x.date asc
[datenumber.pageselect]-==> พารามิเตอร์: 2017-3-28 (สตริง), 2017-4-4 (สตริง), 1 (ยาว)
[datenumber.pageselect]-<== ทั้งหมด: 19
เนื้อหาที่ส่งออกค่อนข้างแย่มาก อักขระการเชื่อมต่อฐานข้อมูลและชื่อผู้ใช้และรหัสผ่านจะถูกส่งออกดังนั้นควรระมัดระวัง
อย่างไรก็ตามสิ่งหนึ่งที่ไม่ดีคือคำสั่ง SQL และพารามิเตอร์เป็นเอาต์พุตแยกต่างหาก หากคุณต้องการคัดลอกไปยังเครื่องมือค้นหาเพื่อแก้ไขข้อบกพร่องคุณต้องกรอกพารามิเตอร์ด้วยตัวเองซึ่งเป็นปัญหามากขึ้น
สภาพแวดล้อมโครงการของฉัน
Spring 4.0.2 + Spring MVC 4.0.2 + MyBatis 3.2.6
วิธีที่ 1: ใช้เอาต์พุตบันทึกมาตรฐาน
วิธีนี้ค่อนข้างง่าย คุณจะต้องกำหนดค่าไฟล์การกำหนดค่าของ mybatis ด้วยคุณสมบัติที่เกี่ยวข้องและคุณไม่จำเป็นต้องใส่ไฟล์ log4j.properties
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! การกำหนดค่า doctype สาธารณะ "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" value = "stdout_logging"/> </settings> </การกำหนดค่า>
ข้อความสำคัญ:
<การตั้งค่าชื่อ = "logimpl" value = "stdout_logging"/>
ระบุว่าการใช้งานการใช้งาน mybatis ควรใช้ หากการตั้งค่านี้ไม่มีอยู่การบันทึกการใช้งานจะถูกค้นพบโดยอัตโนมัติ
วิธีที่ 2: ใช้เอาต์พุตบันทึก log4j
1. ไฟล์ Spring-mybatis.xml ไม่จำเป็นต้องแก้ไข
2. ใน mybatis.xml ระบุว่าใช้ log4j เป็นการใช้งานบันทึกซึ่งฉันไม่จำเป็นต้องทดสอบจริง
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! การกำหนดค่า doctype สาธารณะ "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" value = "log4j"/> </settings> </การกำหนดค่า> <!-อันที่จริงคุณสามารถทดสอบได้ว่าไฟล์นี้พร้อมใช้งาน->
ค่าค่าที่นี่สามารถเป็น SLF4J, Apache Commons Logging, log4j2, log4j, การบันทึก JDK (ยกเว้น log4j2, log4j, ไม่ผ่านการตรวจสอบอื่น ๆ ) และจะถูกค้นหาตามลำดับ
3. การกำหนดค่าเป็นสิ่งจำเป็นใน web.xml
<Sistener> <Sistener-Lass> org.springframework.web.util.log4jconfiglistener </listener-class> </listener>
หรือใช้สิ่งต่อไปนี้ (ไม่ได้ทดสอบ)
<Sistener> <Sistener-Lass> org.apache.logging.log4j.web.log4jservletContextListener </listener-class> </listener>
4. ในที่สุดก็กำหนดค่า log4j.properties
### log4j การกำหนดค่า #### ### เมื่อรวมกับฤดูใบไม้ผลิคุณต้องระบุตำแหน่งไฟล์นี้ใน web.xml และเพิ่มผู้ฟัง #### #define ระดับเอาต์พุตและปลายทางเอาต์พุตของ log4j (ปลายทางสามารถปรับแต่งได้ - log4j.appender.console.threshold = debug ##### คุณสามารถระบุรูปแบบเอาต์พุตบันทึกได้อย่างยืดหยุ่น บรรทัดต่อไปนี้ระบุรูปแบบเฉพาะ ############# หมวดหมู่ที่ข้อมูลบันทึกเอาท์พุทเป็นชื่อเต็มของคลาส#%m: ข้อความที่ระบุในรหัสข้อมูลบันทึกเฉพาะที่สร้างขึ้น#%n: เอาต์พุตบรรทัดการส่งคืนรถ org.apache.log4j.patternlayout log4j.appender.console.layout.conversionPattern = [%c]-%m%n #------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ org.apache.log4j.rollingFilePender #log ไฟล์เอาท์พุทไดเรกทอรี log4j.appender.file.file = log/tibet.log #define ขนาดไฟล์สูงสุด log4j.appender.file.maxFilesize = 10MB #### log4j.appender.file.layout = org.apache.log4j.patternlayout log4j.appender.file.layout.conversionPattern = [%p] [%d {yy-mm-dd}] [%c] - - แสดงคำสั่ง SQL ชิ้นส่วน log4j.logger.org.mybatis = debug #log4j.logger.cn.tibet.cas.dao = debug #log4j.logger.org.mybatis.common.jdbc.simpledatasource = debug. #log4j.logger.org.mybatis.common.jdbc.scriptrunner = debug #log4j.logger.org.mybatis.sqlmap.engine.impl.sqlmaplientdelegate = debug #log4j.logger.java.sql.sql.sql.sql. log4j.logger.java.sql = debug log4j.logger.java.sql.statement = debug log4j.logger.java.sql.resultset = debug log4j.logger.java.sql.preperedStatement = debug การเปรียบเทียบสองวิธี
1. การกำหนดค่าโดยใช้เอาต์พุตบันทึกมาตรฐานนั้นง่ายในขณะที่การกำหนดค่าโดยใช้เอาต์พุตบันทึก log4j ค่อนข้างซับซ้อน
2. log4j มีฟังก์ชั่นที่ทรงพลังและค่อนข้างดีควบคุมความละเอียด
เมื่อระบุเป็น "stdout_logging" ในไฟล์การกำหนดค่าการใช้งานบันทึกใดที่ใช้จริง Apache Commons เข้าสู่ระบบหรือการบันทึก JDK?
ไม่มีของพวกเขามันเป็น System.out.pringln
อัปเดตเมื่อ 2017-09-14
เพื่อนบางคนรายงานว่าพวกเขาจะไม่ส่งออกคำสั่ง SQL หลังจากกำหนดค่าวิธีที่สอง โปรดทราบว่าในไฟล์ log4j.properties:
log4j.appender.console.threshold = debug
มันสอดคล้องกับตัวอย่างนี้หรือไม่?
โปรดใส่ใจกับรายละเอียด เพื่อนที่เพิ่งเริ่มเรียนสามารถใช้การกำหนดค่าที่ให้ไว้ในตัวอย่างนี้ก่อนจากนั้นปรับแต่งมันในลักษณะส่วนตัว
นอกจากนี้ตามการกำหนดค่าข้างต้นฉันจะส่งออกข้อมูลจำนวนมากนอกคำสั่ง SQL เพื่อนพยายามส่งออกเฉพาะคำสั่ง SQL พารามิเตอร์และผลลัพธ์
ขอบคุณที่นี่และแบ่งปันกับคุณ:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น