Este artigo apresenta principalmente uma explicação detalhada dos logs combinados com o LOG4J e o SLF4J na estrutura do SSM e os compartilha com você. Os detalhes são os seguintes:
Primeiro, adicione pacotes LOG4J e SLF4J JAR
<!-Processamento de log <!-Slf4J Log Package-> <Depency> <PuerpId> org.slf4j </foupiD> <TRAFACTID> SLF4J-API </ArtifactId> <Versão> 1.7.21 </versão> </dependency> <pendency> <purpuld> org.slf4j </grupo> <Versão> 1.7.21 </sisters> </dependency> <!-Introdução ao pacote de log-> <pendency> <puperid> log4j </groupId>-> <tutifactId> log4j </artifactId> <versão> 1.2.16 </sipers> </ipendency>
A fábrica de log embutida da Mybatis fornece funções de registro. A implementação específica de log tem as seguintes ferramentas:
1. Qual ferramenta de implementação de log para escolher é determinada pela fábrica de log embutida da Mybatis. Ele usará o primeiro encontrado (encontre no pedido listado acima). Se nenhum deles for encontrado, a função de registro será desativada.
Muitos servidores de aplicativos já contêm o registro do Commons, como Tomcat e WebShpere, para que o Mybatis o implemente como um log específico. É muito importante lembrar disso. Isso significará que em um ambiente como o WebSphere - o WebSphere fornece uma implementação privada do registro do Commons e sua configuração LOG4J será ignorada. Essa abordagem é inevitavelmente triste. Como o mybatis pode ignorar sua configuração? De fato, como o registro do Commons já existe, o LOG4J é naturalmente ignorado em ordem de prioridade! No entanto, se o seu aplicativo for implantado em um ambiente que contém o registro do Commons e você desejar usar outras estruturas de log, você poderá selecionar uma implementação de log diferente adicionando uma configuração (configuração) ao arquivo de configuração 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> <!-- Used to output log4j:LOG4J SLF4J -> <Configurações> <Configuração name = "logImpl" value = "slf4j"/> </fastings> <!-Este arquivo pode ser um arquivo vazio, mas deve ter esse arquivo-> <!-a localização das plugins no arquivo de configuração? Ambientes?, DatabaseIdProvider?, Mappers? -> <lugins> <!-com.github.pageHelper é o nome do pacote em que a classe PageHelper está localizada-> <plugin interceptor = "com.github.pagehelper.pageHelper"> <!-Este parâmetro pode ser definido sem definir versões em versões 4.0.0 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Como o número da página de pagenum-> <!-o efeito é o mesmo que o pagenum no startpage-> <propriedade name = "OffsetSPagenum" value = "true" /> <!-este parâmetro padrão para false-> <!-quando definido como true, a consulta será executada usando a paginação de rowbounds "> <propriedades =" rowboundswithccound " Rowbounds.limit = 0, todos os resultados serão consultados-> <!-(equivalente ao fato de a consulta da página não ser executada, mas o resultado ainda é o tipo de página)-> <propriedade name = "PagesizeZero" value ("True" /> <! Pagenum> Páginas consultarão a última página-> <!-Quando a racionalização estiver desativada, se pagenum <1 ou pagenum> as páginas retornarão dados vazios-> <!-<propriedades name = "razoável" value = "false" />-> <!-Versão 3.5.0 está disponível-para suportar o startPage (objeto para os parâmetros)-> <! ServletRequest-> <!-Você pode configurar o pagenum, Pagesize, contar, PageSizezero, razoável, ordenar e usar o valor padrão para mapeamentos-> <!-se você não entende esse significado, não copie a configuração; /> --> <!-- 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>Os valores opcionais do logImpl são: SLF4J, LOG4J, LOG4J2, JDK_LOGGING, COMMONS_LOGGING, STDOUT_LOGGING, NO_LOGGING ou o nome de classe totalmente qualificado do tipo de classe que implementa a classe Org.Apache.ibatis.Logging.GOG e o construtor. (Você pode consultar a implementação de org.apache.ibatis.logging.slf4j.slf4jimpl.java)
Você chama um método conforme necessário:
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 ();
Se você precisar chamar um dos métodos acima, chame -o antes de todos os outros métodos Mybatis. Além disso, é significativo chamar o método correspondente sob a premissa de que ele existe na implementação de log correspondente, caso contrário, o mybatis será ignorado. Se o Log4J não existir em seu ambiente, mas você chama o método correspondente, o Mybatis ignorará essa chamada e pesquisará a implementação do log na ordem de pesquisa padrão.
2. Configure web.xml
<!-- Load log4j --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
3. Basta criar um arquivo chamado log4j.properties no aplicativo ClassPath, o conteúdo específico do arquivo é o seguinte:
Log4j.rootlogger = Info, Console, DailyFile# TODO Por favor, adicione -o ao publicar ao Alibaba Cloud. Além disso, o console não sai (apenas aviso de saída ou informações de erro)#informações, console, DailyFileLog4j.logger.org.mybatis = DebugLog4j.logger.com.itzixi.mapper = debugLog4j.appender.console = org.apache.log4j.consoleappenderLog4j.appender.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 Exibe a configuração do SQL Log Configuration#log4j.logger.org.mybatis = Debug#log4j.logger.com.itzixi.mapper = depuração#Scroll the Log Files log4j.appender.dailyfile = org.apache.log4j.dailyrollingFileAppenderLog4j.appender.dailyfile.encoding = utf-8log4j.appender.dailyfile.threshold = Informações# TODO Log Log Endereço, para o ambiente oficial, não se certifique de alternar para aliba #log4j.appender.dailyfile.file = c: /logs/itzixi-web/log.log4jlog4j.append.dailyfile.file=/itzixi-disk1/logs/itzixi-web/log.log4jlog4j.append.dailyfile .DatePattern = ' Hh: mm: ss, ss} [%t] [%l] - [%p]%m%n ## mostre instrução sql Parte#log4j.logger.com.ibatis = Debug#log4j.logger.com.ibatis.common.jdbc.simpledatasource = Debug#log4j.logger.com.ibatis.common.jdbc.ScriptUrunner = depuG#log4j.logger.com .ibatis.sqlmap.engine.impl.sqlmapClientDelegate = Debug#log4j.logger.java.sql.connection = debug#log4j.ogger.java.sql.statement = debuG#log4j.logger.java.sql.PerConforme mostrado na figura, quando entramos em depuração, a instrução SQL é impressa.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.