Lista de anexadores
O registrador permite salvar dados em vários arquivos de uma só vez. Esses fluxos de dados de saída são chamados de anexadores (de anexar). Existem alguns anexos padrão, portanto, abordaremos apenas os mais populares:
Anexadores | Descrição | |
---|---|---|
1 | Console | Imprime dados no console |
2 | Arquivo | Envia dados para um arquivo |
3 | DailyRollingFile | Envia dados para um arquivo, o arquivo é sobrescrito ciclicamente |
4 | assíncrono | Permite gravar dados em outro anexador de forma assíncrona |
5 | soquete | Grava dados em um soquete específico |
6 | JDBC | Grava mensagens no banco de dados usando o protocolo JDBC |
7 | JPA | Grava mensagens no banco de dados usando o protocolo JPA |
8 | HTTP | Envia eventos via protocolo HTTP para um servidor remoto |
9 | SMTP | Armazena mensagens em um buffer e as envia como um e-mail |
Uma boa documentação para todos os anexadores está em seu site oficial
E a seguir consideraremos os mais populares e simples deles.
ConsoleAppender
O anexador mais simples éConsoleApender
. Como você deve ter adivinhado, ele simplesmente escreve suas mensagens no console. Tem vários parâmetros interessantes para nós:
Atributos | ||
---|---|---|
1 | nome | Nome do anexo |
2 | filtro | Permite filtrar algumas mensagens |
3 | disposição | Especifica a formatação das mensagens quando a saída |
4 | alvo | Especifica onde escrever: SYTEM_OUT ouSYSTEM_ERR |
É muito fácil configurá-lo:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
FileAppender
O anexador mais útil éFileAppender
. Ao contrário, ConsoleAppender
ele escreve suas mensagens em um arquivo. O que é muito útil quando seu aplicativo está sendo executado em algum lugar do servidor. Tem muitos parâmetros, porque ele deve ser capaz de gravar arquivos em diferentes sistemas operacionais.
Mas vamos considerar apenas os mais populares deles.
1 | nome | Especifica o nome do anexador |
2 | filtro | Permite filtrar algumas mensagens |
3 | disposição | Especifica a formatação das mensagens quando a saída |
4 | nome do arquivo | Especifica o nome do arquivo onde escrever mensagens |
5 | acrescentar | Se true , as mensagens serão adicionadas ao log antigo, se false - o arquivo de log será recriado toda vez que o aplicativo for iniciado. |
6 | tamanho do buffer | Define o tamanho do buffer em bytes |
7 | descarga imediata | Se true , cada mensagem é realmente gravada no disco imediatamente (sem um buffer). O log começa a funcionar lentamente, mas isso evita que você perca dados quando o programa trava. |
Você já sabe como trabalhar bem com arquivos, então essas configurações não são novidade para você. A configuração desse logger é ainda mais fácil do que um logger de console:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
RollingFileAppender
O appender mais popular éRollingFileAppender
. Ao contrário FileAppender
, permite dividir o log em vários arquivos pequenos. Isso é muito importante para toras grandes. Além disso, permite definir regras sobre o que fazer com os arquivos antigos depois que os novos começaram a ser gravados.
E este appender tem quase cem configurações diferentes. Você pode saber mais sobre eles no link .
Considere os atributos mais populares deste appender:
Atributos | ||
---|---|---|
1 | nome | Especifica o nome do anexador |
2 | filtro | Permite filtrar algumas mensagens |
3 | disposição | Especifica a formatação das mensagens quando a saída |
4 | nome do arquivo | Especifica o nome do arquivo onde escrever mensagens |
5 | padrão de arquivo | Especifica um padrão de nomenclatura para arquivos compactados que não são mais gravados |
6 | política | Especifica a condição em que o arquivo deve começar a ser substituído |
7 | estratégia | Descreve o que fazer com arquivos antigos: arquivo, histórico por quantos dias manter, etc. |
Aqui está um bom exemplo:
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
O parâmetro filePattern
especifica um modelo para arquivos de logs antigos. Existem também dois, quando acionados, um novo arquivo será gravado:
TimeBasedTriggeringPolicy
– funcionará se um novo dia começar (a data atual mudar)SizeBasedTriggeringPolicy
– funcionará se o tamanho do arquivo atingir 250 MB
GO TO FULL VERSION