Este artículo presenta principalmente una explicación detallada de los registros combinados con log4j y slf4j bajo el marco SSM, y los comparte con usted. Los detalles son los siguientes:
Primero agregue los paquetes JAR LOG4J y SLF4J
< <versión> 1.7.21 </versión> </pendency> <!-Introducting Log Package-> <Spendency> <ProupId> log4j </groupid>-> <artifactid> log4j </artifactid> <versión> 1.2.16 </versión> </dependencia>
La fábrica de registros incorporada de MyBatis proporciona funciones de registro. La implementación de registro específica tiene las siguientes herramientas:
1. Qué herramienta de implementación de registro para elegir está determinada por la fábrica de registros incorporada de MyBatis. Utilizará el primero encontrado (se encuentre en el pedido mencionado anteriormente). Si no se encuentran ninguno de ellos, la función de registro se deshabilitará.
Muchos servidores de aplicaciones ya contienen registro de bienes comunes, como Tomcat y WebShpere, por lo que MyBatis lo implementará como un registro específico. Es muy importante recordar esto. Esto significará que en un entorno como WebSphere: WebSphere proporciona una implementación privada del registro de los Comunes, y su configuración log4J será ignorada. Este enfoque es inevitablemente triste. ¿Cómo puede MyBatis ignorar su configuración? De hecho, debido a que el registro de los bienes comunes ya existe, ¡log4J se ignora naturalmente en orden de prioridad! Sin embargo, si su aplicación se implementa en un entorno que contiene registro de bienes comunes y desea usar otros marcos de registro, puede seleccionar una implementación de registro diferente agregando una configuración (configuración) al archivo de configuración mybatis mybatis-config.xml.
<? xml versión = "1.0" encoding = "utf-8"?> < <tallings> <setting name = "logimpl" value = "slf4j"/> </etnettings> <!-Este archivo puede ser un archivo vacío, pero debe tener este archivo-> <!-¿La ubicación de los complementos en el archivo de configuración debe cumplir con los requisitos, de lo contrario, un error se informará en el siguiente orden: ¿Propiedades? ¿Entendiciones?, ¿Typealiases?, Typehandlers? ¿DatabaseIdProvider?, ¿Mapeadores? -> <glugins> <!-com.github.pagehelper es el nombre del paquete donde se encuentra la clase PageHelper-> <plugin interceptor = "com.github.pagehelper.pagehelper"> <!-Este parámetro se puede configurar sin configurar versiones en versiones 4.0.0 --------------------------------------------------------------------------------------------------------------------------------------------------- como número de página de Pagenum-> <!-El efecto es el mismo que el Pagenum en StartPage-> <Property name = "offsetSpageNum" value = "true" /> <!-Este parámetro predeterminado a falso-> <!-Cuando se establece en verdadero, el recuento se realizará utilizando RowBounds Pagination-> <Nombre de propiedad = "Row BoundswithCount" Value = "True" <verdadero ". pageSize = 0 o rowBounds.limit = 0, todos los resultados se consultarán-> <!-(equivalente al hecho de que la consulta de la página no se ejecuta, pero el resultado todavía está tipo de página)-> <name de propiedad = "pageSizebero" valor = "true" /> <!-Versión 3.3.0 está disponible-Paging Parameter Rationalization, falso está habilitado por predeterminado-> <!-cuando Rational, se concierne a PAGEMEME, lo que está en la actualización. consulta la primera página, si pagenum> las páginas consultan la última página-> <!-cuando la racionalización se deshabilita, si las páginas Pagenum <1 o Pagenum> devolverán los datos vacíos-> <!-<Propiedad name = "razonable" valor = "falso" />-> <!-Versión 3.5.0 está disponible-en el método de parámetros de parámetros de inicio (parámetros de objetos)-> < Mapeo para obtener valores de MAP o ServLetRequest-> <!-Puede configurar Pagenum, PageSize, Count, PageSizeZero, razonable, OrderBy, y usar el valor predeterminado para las asignaciones-> <!-Si no comprende este significado, no copie la configuración casualmente-> <!-<nombre de propiedad = "params" valor = "pageNum = pageNumserTart; PageSizege; />-> <!-Soporte de los parámetros de la página a través de los parámetros de la interfaz de mapper-> <propiedad name = "supportMethodSarGuments" value = "false"/> <!-Siempre return PageInfo type, verifique si el tipo de retorno es PageInfo, ninguno devuelve la página-> <name de propiedad = "returnPageInfo" value = "no"/> </glugin> <////////Configuración devuelve la página
Los valores opcionales de logMPL son: slf4j, log4j, log4j2, jdk_logging, commons_logging, stdout_logging, no_logging o el nombre de clase totalmente calificado de la clase que implementa la interfaz org.apache.ibatis.logging.log, y el constructor de esta clase debe ser una cadena (tipo de cadena) como el parámetro) como el parámetro) como el parámetro. (Puede consultar la implementación de org.apache.ibatis.logging.slf4j.slf4jimpl.java)
Llamas a un método según sea necesario:
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 ();
Si necesita llamar a uno de los métodos anteriores, llámelo antes de todos los demás métodos mybatis. Además, solo es significativo llamar al método correspondiente bajo la premisa de que existe en la implementación del registro correspondiente, de lo contrario, MyBatis será ignorado. Si LOG4J no existe en su entorno, pero usted llama al método correspondiente, MyBatis ignorará esta llamada y buscará la implementación del registro en la orden de búsqueda predeterminada.
2. Configurar web.xml
<!-Cargar log4j-> <context-param> <amamname> log4jconfiglocation </amamname> <amam-value> classpath: log4j.properties </param-value> </texting-param> <searcher> <searcher-class> org.ssspingframework.web.util.log4jconfiglistener </oyeveer-class
3. Simplemente cree un archivo llamado log4j.properties en la aplicación classpath, el contenido específico del archivo es el siguiente:
log4j.rootlogger = info, consola, diaryfile# TODO por favor agregue al publicar a Alibaba Cloud. Además, la consola no sale (solo información de salida o información de error)#Info, Console, DailyFilelog4j.logger.org.mybatis = DebugLog4j.logger.com.itzixi.mapper = debuglog4j.appender.console = org.apache.log4j.consoleppenderlog4j.appender.console = 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 Muestra la configuración del registro de la declaración SQL#log4j.logger.org.mybatis = DEBUG#log4j.logger.com.itzixi.mapper = DEBUG#Descargar regularmente los registros de registros y generar registros todos los días día día día día día día día día día al día día día día día día día día día día día al día día día día día día día día día día día al día día día día día día día día día día día al día día día día día día día día día día día día día al día de log4j.appender.dailyfile = org.apache.log4j.dailyrollingFileAppenderlog4j.appender.dailyfile.encoding = utf-8log4j.appender.dailyfile.threshold = info# dirección de registro local, para el entorno oficial, por favor, asegúrese de cambiar a la dirección de la nube de alibaba #log4j.appender.dailyfile.file = c: /logs/itzixi-web/log.log4jlog4j.appender.dailyfile.file=/itzixi-disk1/logs/itzixi-web/log.log4jlog4j.appender.dailyfile .DatePattern = '. HH: MM: SS, SS} [%T] [%L] - [%P]%M%N ## Show SQL Declaración Parte#log4j.logger.com.ibatis = debug#log4j.logger.com.ibatis.common.jdbc.simpledataSource = debug#log4j.logger.com.ibatis.common.jdbc.sictrunner = debug#log4j.logger.com.com .ibatis.sqlmap.engine.impl.sqlmapClientDelegate = debug#log4j.logger.java.sql.connection = debug#log4j.logger.java.sql.statement = debug#log4j.logger.java.sql.preparedstatement = debugComo se muestra en la figura, cuando ingresamos a la depuración, se imprime la instrucción SQL.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.