Logs por dia - resolvido

Estou usando o @Slf4j do import lombok.extern.slf4j.Slf4j;

Grava os logs blz

Só que estou querendo separar por dia, e toda sexta apagar os logs dos últimos 7 dias.

Hoje ele grava neste arquivo somente

image

Segue referência como fazer usando slf4j com logback:

https://www.baeldung.com/java-logging-rolling-file-appenders#3-rolling-based-on-time

É necessário criar um appender RollingFileAppender junto com a policy: TimeBasedRollingPolicy.

Caso seja log4j em vez de logback, tb há um exemplo no mesmo link.

1 curtida

Não entendi muito como fazer

Primeiro tem que saber qual implementação de log seu projeto está usando: log4j, logback, etc. Depois vc deve procurar o arquivo de configuração de acordo com a implementação usada e adicionar o appender nesse arquivo.

1 curtida

Estou usando o slf4j do lombok

A anotação do SLF4J do lombok é apenas para gerar isso no código:

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

Porém, ainda sim, o SLF4J vai precisar ter uma implementação para funcionar, pois ele é apenas a especificação, ou seja, vc precisará ter no classpath alguma dependencia para o SLF4J usar. E essa implementação pode ser o log4j, logback ou qualquer outro (esses 2 são os mais famosos). Vc consegue verificar isso nas dependências do seu projeto.

Pergunto isso, pq, cada implementação vai ter sua forma de configurar os appenders. Por isso é importante saber qual seu projeto está usando.

Veja: SLF4J Manual

1 curtida

Pelo que entendi não estou usando nenhuma implementação.

O que eu faço para mostrar os logs

Na classe

import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
public class JobEnvioEmailService implements Serializable {

@Scheduled(cron = “0 50 1 * * *”, zone = TIME_ZONE)
public void envioEmail() {
log.info("Inicio job envio de email: " + now());
arquivos();
log.info("Fim job envio de email: " + now());
}
}

Pelo que vi aqui, parece que o spring usa o logback por padrão. Vc pode tentar configurar um logback.xml na pasta resource usando o schema que postei antes.

Logback docs: Chapter 4: Appenders

1 curtida

Criei o logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<property name="LOG_LOCATION" value="/var/log/gestao" />
	<appender name="CONSOLE"
		class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss} - %logger{36} - %msg%n</pattern>
		</encoder>
	</appender>
	<appender name="FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<File>${LOG_LOCATION}/crud-api.log</File>
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level - %logger{36} -
				%msg%n</pattern>
		</encoder>
		<rollingPolicy
			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_LOCATION}/arquivo/crud-api-%d{yyyy-MM-dd}.%i.log
			</fileNamePattern>
			<timeBasedFileNamingAndTriggeringPolicy
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>100MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
	</appender>
	<root level="INFO">
		<appender-ref ref="CONSOLE" />
		<appender-ref ref="FILE" />
	</root>
</configuration>

Mas o nome não está com data. Ou só muda o nome amanha ?

crud-api.log (44,7,KB)

1 curtida

Não tenho certeza, mas parece que o log do dia não fica com a data. Em algum momento talvez ele seja renomeado. Mas vou dá uma pesquisada aqui para ver se acho alguma referência.

1 curtida

Iniciei o servidor local hoje, ele salva o arquivo de ontem em outra pasta. Cria um do zero hoje. Vou subir para produção e ver como fica.

1 curtida