Artikel ini terutama memperkenalkan penjelasan terperinci tentang log yang dikombinasikan dengan log4j dan slf4j di bawah kerangka kerja SSM, dan membagikannya kepada Anda. Dengan rincian sebagai berikut:
Paket Tambahkan Log4J dan Slf4j Jar Pertama
<!-Pemrosesan Log <!-Paket log Slf4j-> <dependency> <GroupId> org.slf4j </proupid> <ArtifactId> slf4j-api </t Artifactid> <version> 1.7.21 </version> </depgentency> <dependency> <groupid> ORG.SLF4J </Versi <ArTifactId> slf4j-log4j12 </stifactid> <version> 1.7.21 </version> </dependency> <!-Memperkenalkan paket log-> <dependency> <groupid> LOG4J </groupid>-> <ArTifactId> LOG4J </artifactid> <version> 1.2.16 </Version> </Version> </ArtifactId> Version> 1.2.16 </Version> </Version> </ArtifactId> </Version> </Version> </Version> </ArtifactId> </Version> </Version> </artifactid>
Pabrik log bawaan Mybatis menyediakan fungsi logging. Implementasi log spesifik memiliki alat berikut:
1. Alat implementasi log mana yang akan dipilih ditentukan oleh pabrik log built-in Mybatis. Ini akan menggunakan yang pertama ditemukan (temukan dalam urutan yang tercantum di atas). Jika tidak ada dari mereka yang ditemukan, fungsi logging akan dinonaktifkan.
Banyak server aplikasi sudah berisi logging commons, seperti Tomcat dan Webshpere, jadi Mybatis akan menerapkannya sebagai log tertentu. Sangat penting untuk mengingat ini. Ini berarti bahwa di lingkungan seperti WebSphere - WebSphere menyediakan implementasi pribadi dari Commons Logging, dan konfigurasi log4J Anda akan diabaikan. Pendekatan ini pasti menyedihkan. Bagaimana mybatis dapat mengabaikan konfigurasi Anda? Bahkan, karena logging commons sudah ada, log4j secara alami diabaikan sesuai dengan prioritas! Namun, jika aplikasi Anda digunakan di lingkungan yang berisi logging commons dan Anda ingin menggunakan kerangka kerja logging lainnya, Anda dapat memilih implementasi log yang berbeda dengan menambahkan pengaturan (konfigurasi) ke file konfigurasi mybatis mybatis-config.xml.
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype configuration public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> outbatis-3-config.dtd "> <configuration> <! <Pengaturan> <pengaturan name = "logImpl" value = "slf4j"/> </settings> <!-File ini bisa berupa file kosong, tetapi harus memiliki file ini-> <!-Lokasi plugin dalam file konfigurasi harus memenuhi persyaratan, jika tidak ada kesalahan yang akan dilaporkan dalam urutan berikut: Properties?, Pengaturan ?, ,, TypeLiases ?, ,, typePores? databaseidprovider?, pemetaan? -> <plugins> <!-com.github.pagehelper adalah nama paket di mana kelas pageHelper berada-> <plugin interceptor = "com.github.pagehelper.pagehelper"> <!-parameter ini dapat diatur tanpa pengaturan dalam versi 4.0.0 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- as pageNum page number --> <!-- The effect is the same as the pageNum in startPage --> <property name="offsetAsPageNum" value="true" /> <!-- This parameter defaults to false --> <!-- When set to true, count query will be performed using RowBounds pagination --> <property name="rowBoundsWithCount" value="true" /> <!-- When set to true, if Halamanze = 0 atau rowbounds.limit = 0, semua hasil akan diminta-> <!-(setara dengan fakta bahwa kueri halaman tidak dieksekusi, tetapi hasilnya masih jenis halaman)-> <nama properti = "pagarizezero" value = true " /> <! Versi 3.3.0 tersedia-page parameter page, false tidak dapat dikabar oleh false oleh false oleh false oleh false oleh false oleh false oleh false oleh false oleh false dengan tidak dapat dikabarkan oleh false oleh false oleh false oleh false oleh false oleh false oleh false oleh false oleh false oleh false oleh false oleh FALSE IS FALSE, PAGENUM <1 akan meminta halaman pertama, jika halaman pagenum> akan menanyakan halaman terakhir-> <!-Ketika rasionalisasi dinonaktifkan, jika halaman pagenum <1 atau pagenum> akan mengembalikan data kosong-> <!-<nama properti = "nilai") (false ")-> <!-Versi 3.5.0 Tersedia-dalam Params = Params" Nilai = "FALSE" /> <!-Versi 3.5.0 tersedia-dalam urutan-dalam PARAME-PARINT = The The Obypage ")-> <! Versi 3.5.0 tersedia-dalam urutan-di PARADE-The Obypage = The The The Obypage (false" /> <!-Versi 3.5.0 tersedia-dalam urutan-dalam urutan ke awal-dalam urutan ke awal-di TERTANJUT-TERKETIK-TERKETAK INI TERTANYUM TERTANJUT-KONTOR PARINAL = KEDURAN " /FALSE" /<! Parameter untuk mengonfigurasi pemetaan parameter untuk mendapatkan nilai dari peta atau servletRequest-> <!-Anda dapat mengonfigurasi pagenum, halaman, menghitung, halamanzerzero, wajar, memesan, dan menggunakan nilai default untuk pemetaan-> <!-jika Anda tidak memahami makna ini, jangan salin konfigurasi dengan cepat-> <!-<nama properti = "Param =" value = "pagenum = pageHelPerstart; pageSize = pageHelperrows;" /> --> <!-- Support passing paging parameters through Mapper interface parameters--> <property name="supportMethodsArguments" value="false" /> <!-- Always always return PageInfo type, check check whether the return type is PageInfo, none returns Page --> <property name="returnPageInfo" value="none" /> </plugin> </plugins> </configuration>
Nilai opsional dari logImpl adalah: slf4j, log4j, log4j2, jdk_logging, commons_logging, stdout_logging, no_logging atau nama kelas yang sepenuhnya memenuhi syarat dari kelas yang mengimplementasikan antarmuka org.apache.latis.glogging.log, dan konstruksi kelas ini perlu menjadi string. (Anda dapat merujuk pada implementasi org.apache.ibatis.logging.slf4j.slf4jimpl.java)
Anda menyebut metode sesuai kebutuhan:
org.apache.ibatis.logging.logfactory.useslf4jlogging (); org.apache.ibatis.logging.logfactory.uselog4jlogging (); org.apache.ibatis.logging.logfactory.usejdklogging (); org.apache.ibatis.logging.logfactory.usejdklogging (); org.apache.ibatis.logging.logfactory.usecommonslogging (); org.apache.ibatis.logging.logfactory.usestdoutlogging ();
Jika Anda perlu memanggil salah satu metode di atas, sebut saja sebelum semua metode mybatis lainnya. Selain itu, hanya bermakna untuk memanggil metode yang sesuai di bawah premis yang ada dalam implementasi log yang sesuai, jika tidak mybatis akan diabaikan. Jika log4j tidak ada di lingkungan Anda, tetapi Anda memanggil metode yang sesuai, MyBatis akan mengabaikan panggilan ini dan sebaliknya mencari implementasi log dalam urutan pencarian default.
2. Konfigurasikan web.xml
<!-Muat log4j-> <context-param> <param-name> LOG4JConfigLocation </param-name> <param-value> classpath: log4j.properties </param-value> </context-param> <listener> <listener-class> org.springframework.weB.boRam> <listener> <listener>
3. Cukup buat file bernama log4j.properties di classpath aplikasi, konten spesifik file adalah sebagai berikut:
LOG4J.ROOTLOGGER = Info, Konsol, DailyFile# TODO Harap tambahkan saat menerbitkan ke Alibaba Cloud. Selain itu, konsol tidak output (hanya peringatan output atau informasi kesalahan)#info, konsol, dailyfilelog4j.logger.org.mybatis = Debuglog4j.logger.com.itzixi.mapper = debuglog4j.appender.console = org.apache.log4j.consoleAppenderlog4j.applender.console.encoding = UTF-8LOG4J.Appender.console.layout = org.apache.log4j.patternLayoutLog4j.appender.console.layout.conversionPattern =%-d {yyyy-mm-dd HH: mm: ss, ss} [%t] [%l] - [%p]%m%n#mybatis menampilkan konfigurasi log pernyataan sql#log4j.logger.org.mybatis = debug#log4j.logger.com.itzixi.mapper = debug#secara teratur menggulir file -file log4j.logger.com.itzixi.mapper = debug#teratur menggulir file Log Gener Gener Gener A Gener Gener A Generate Genery Gener Genery dan teratur secara teratur secara teratur secara teratur secara teratur secara teratur LOG4J.Appender.DailyFile = org.apache.log4j.dailyrollingfileAppenderLog4j.Appender.DailyFile.encoding = UTF-8LOG4J.Appender.dailyfile.threshold = Info# Todo Alamat log lokal, untuk lingkungan resmi, harap pastikan untuk beralih ke Alibaba = info# TODO ALAMAT LOKAL, untuk lingkungan resmi, harap pastikan untuk beralih ke Alibaba = Info# Todo Address Lok #log4j.Appender.dailyfile.file = c: /logs/itzixi-web/log.log4jlog4j.appender.dailyfile.file=/itzixi-disk1/logs/itzixi-web/log.log4jlog4j.appling.dailyfile .DatePattern = '.' Yyyy-mm-ddlog4j.appender.dailyfile.layout = org.apache.log4j.patternlayoutlog4j.appender.dailyfile.layout.conversionPattern =%-d {yyyy-mm-dd HH: MM: SS, SS} [%t] [%l] - [%p]%m%n ## Tampilkan pernyataan SQL Bagian#LOG4J.LOGGER.COM.IBATIS = DEBUG#LOG4J.LOGGER.COM.IBATIS.COMMON.JDBC.SIMPLEDataSource = debug#log4j.logger.com.ibatis.common.jdbc.scriptrunner = debug#log4j.logger.com .IBATIS.SQLMAP.Engine.Impl.SQLMAPCLIENTDELEGATE = DEBUG#LOG4J.LOGGER.JAVA.SQL.Connection = debug#log4j.logger.java.sql.statement = debug#log4j.logger.java.sqlSeperti yang ditunjukkan pada gambar, ketika kita memasuki debug, pernyataan SQL dicetak.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.