Quando o programa em segundo plano é desenvolvido e lançado, geralmente são usadas a gravação de impressão de informações de log e log de log. Durante o desenvolvimento, a impressão de informações de log pode localizar rapidamente o problema e nos ajudar a desenvolver rapidamente. Se ocorrer um bug ou erro após o programa online, os registros de log serão necessários para encontrar o problema.
O Spring Boot pode integrar muitos sistemas de registro diferentes, entre os quais o Apache Log4J mais comumente usado, e o Log4J 2 é uma versão atualizada do LOG4J, que fez muitas melhorias significativas em comparação com o log4j 1.x. Portanto, este blog falará diretamente sobre como a Spring Boot integra e configura o log4j2.
1. Importar pacote log4j2
Se você estiver usando o gradle, adicione as seguintes dependências no arquivo Build.gradle. O método gradle é usado no código de amostra.
dependências {// log4j2 compile "org.apache.logging.log4j: log4j-api: 2.8" compile "org.apache.logging.log4j: log4j-core: 2.8" // usado para suportar o compilação do assíncrono no logger 'com.lmax: dispensor: 3.3.Se você estiver usando o MAVEN, adicione as seguintes dependências no arquivo pom.xml.
<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.8</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.8</version> </dependency> <pendency> <voundid> com.lmax </foupidId> <ArtifactId> disruptor </artifactId> <versão> 3.3.6 </versão> </dependency> </dependências>
2. Adicione o arquivo de configuração log4j2
Crie o arquivo log4j2.xml no diretório raiz do arquivo de recursos de recursos do projeto e copie o seguinte código no arquivo.
<? xml versão = "1.0" coding = "utf-8"?> <!-O status após a configuração é usado para definir a saída de informações dentro do log4j2 em si. Não pode ser definido. Quando estiver definido como rastreado, você verá várias saídas detalhadas dentro do log4j2. Pode ser definido como desativado (desativado) ou erro (apenas informações de erro de saída)-> <ConfigurationStatus = "OFF"> <!-Log File Directory e Configuração do diretório de arquivos compactados-> <Properts> <PropertyName = "FileName">/Home/Kylin/Log/Knight/Spring_Log </Property> <PropertyName = "FILEGZ">/HOME/KYLIN/LOG/KNIGHT/SPPING_LOG/7Z </PROPRIEDADE> </PROPERTIES> <PEMENDERS> <!-Configuração para logs de console de saída-> <consolename = "console" Target = "System_out"> <! <Limholdfilterlevel = "info" onmatch = "aceitar" onmismatch = "neny"/> <!-saída de log formato-> <PatternLayoutPattern = " %d {hh: mm: ss.ss} [ %t] %-5level Logger {36}- %msg %n"/> Cada vez que o tamanho excede o tamanho, o registro desse tamanho será armazenado automaticamente na pasta criada por mês e comprimida como um arquivo-> <rollingrandomaccessfileName = "infily" filename = "$ {filename} /web-info.log" imediatofush = "false" filepattern = "$ {filegz}/$$ {date: yyyy-mm}/app- %d {mm-dd-yyyy}- %i.web-info.gz"> <batterLayoutPattern = " %d {yyyy-mm-dd 'AT' HH: MM: Z} %msg%xex%n "/> <policies> <timebasedTriggeringPolicyInterval =" 6 "modulate =" true "/> <sizeBasedTriggeringPolicySize =" 50 Mb "/> </policies> <filters> <!-!-Registre apenas informações e informações sobre o nível de aviso =" <Whresholdfilterlevel = "info" onmatch = "aceitar" onmismatch = "neny"/> </filters> <!-especifique o número máximo de pacotes compactados por dia, padrão 7, se exceder o Storms! <RollingRandomAccessFilename="errorFile"fileName="${fileName}/web-error.log"immediateFlush="false" filePattern="${fileGz}/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.web-error.gz"> <PatternLayoutPattern = " %d {yyyyyy-mm-dd 'em' hh: mm: ss z} [ %t] %-5level %logger {36} %l %m- %msg %xex %n"/> <olicies> <timebasedingpolicy-ciplicinterval = "6" 6 "/> <policies> <timebasedingpolicy-ciplicinterval =" 6 "" 6 "/> <policies> <timebedgeringpolicy-icinterval =" 6 "" 6 "/> <policies> <timebasedingpolicy-ciplicinterval =" 6 "" 6 "/> <policies> <timebasdingPeringPolicy (" 6 "/>" Mb "/> </políticas> <filters> <!-Registre apenas informações sobre o nível de erro-> <whresholdfilterlevel =" error "onmatch =" aceitam "onmismatch =" neny "/> </filters> <!-especifique o número máximo de pacotes compactos por dia, padrão 7, se ele excederá o número anterior, o que se destaca, o número de pacotes de adolescentes), se o padrão é o número de pacotes, se fortalecerá <! </Rollingrandomaccessfile> </pênders> <!-Especifique o número máximo de pacotes compactados por dia, o padrão é 7 e o anterior será substituído-> <DefaulTrolloverStrategyMax = "50"/> </rollingrandomaccessfile> </appenders> <! <! - assíncrono - registro assíncrono - requer suporte do lmax disruptor -> <asyncrootLevel = "info" additivity = "false"> <AppenderRefref = "console"/> <ppenderrefref = "infilé"/> <ppenderRefref = "Errorfile"/> </ascrrofronsergrogh = "</asnyrfr.3. Escreva log4j2 classe auxiliar
Depois de fazer a configuração acima, podemos escrever uma classe auxiliar para torná -lo mais conveniente para usarmos o log4j2 para registrar logs.
Crie um arquivo de classe L.java no pacote Utils.
pacote com.spring.log4j2.utils; importar org.apache.logging.log4j.logmanager; import org.apache.logging.log4j.logger;/*** Logger Logging Auxiliar Class** criado por kylin em 2017/5/11. */public Classl {private Static final Logger = LogManager.getLogger (); privatel () { / * não pode ser instanciado * / lança novo UnsupportEdOperationException ("não pode ser instanciado"); } publicstaticLoggerGetLogger () {return logger; } publicstaticVoidt (string msg) {Logger.Trace (msg); } publicstaticVoidd (string msg) {logger.debug (msg); } publicstaticVoidi (string msg) {Logger.info (msg); } publicstaticVoidw (string msg) {logger.warn (msg); } publicstaticVoide (string msg) {Logger.error (msg); }}Depois de escrever a classe auxiliar, é muito simples de usar e pode ser facilmente usado através do código a seguir.
@ControllerPublic ClassWebController {@RequestMapping ("/") PublicStringIndex () {String msg = "Configuração e uso do log4j2 na série de inicialização da primavera"; LT (msg); LD (msg); Li (msg); LW (msg); LE (msg); retornar "índice"; }}A classe auxiliar aqui apenas escreve alguns métodos básicos de uso, você pode personalizá -los de acordo com suas necessidades e adicionar mais métodos auxiliares. Para métodos não fornecidos na classe ajudante, você também pode usar o método L.GetLogger () para obter a instância do logger a ser usada.
4. Verificação de resultados
Classificação de nível de toras: Trace <Debug <info <warn <erro <fatal.
Porque o nível no meu log4j2 está definido para o nível de informação. Portanto, apenas três níveis de informação, aviso e erro podem ser vistos nas informações de impressão (as informações no nível fatal não são impressas, caso contrário, poderão ser vistas).
As informações de impressão são mostradas na figura abaixo:
Ao mesmo tempo, um arquivo de log foi gerado no sistema de computador, conforme mostrado na figura abaixo:
Ao observar o caminho, você pode descobrir que esse caminho é exatamente o caminho definido em log4j2.xml:
<!-Diretório de arquivos de registro e configuração do diretório de arquivos compactados-> <Properts> <PropertyName = "FileName">/home/kylin/log/knight/spring_log </property> <PropertyName = "FileGz">/home/kylin/log/knight/spring_log/7z </propriedade> </propuls>
5. Mais
Endereço do Github do Log4J2: https://github.com/apache/logging-log4j2
O endereço do código de exemplo deste tutorial: https://github.com/dkylin/springboot-sample/tree/master/springboot-log4j2
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.