我正在尝试设置日志记录。 我有一个LoginAttemptService类,我希望只有此类的日志才会存储在日志中。
@Service
public class LoginAttemptService {
private final int MAX_ATTEMPT = 5;
private LoadingCache<String, Integer> attemptsCache;
private Logger logger = LoggerFactory.getLogger(LoginAttemptService.class);
public void loginSucceeded(String username, String key) {
attemptsCache.invalidate(key);
logger.info("Successful login: " + username + " ip address:" + key);
}
应用程序属性:
logging.file = logfile.log
现在的问题是,所有内容都保存到该文件中……不仅是登录尝试
编辑: 我使用以下配置在类路径中创建了logback.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<appender name="login" class="ch.qos.logback.core.FileAppender">
<file>log1.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.patrikmaryska.bc_prace.bc_prace.service.LoginAttemptService" level="info" additivity="false">
<appender-ref ref="login"/>
</logger>
</configuration>
但是它现在仍然保存到该文件中...
答案 0 :(得分:1)
您应该将logback.xml添加到资源中并配置附加程序。
并使用以下记录器:
@Service
public class LoginAttemptService {
private final int MAX_ATTEMPT = 5;
private LoadingCache<String, Integer> attemptsCache;
private static Logger loginLogger = LoggerFactory.getLogger("login");
public void loginSucceeded(String username, String key) {
attemptsCache.invalidate(key);
loginLogger.info("Successful login: " + username + " ip address:" + key);
}
logback.xml:
<configuration>
<property name="LOGS_HOME" value="./logs/"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<appender name="LOGIN-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS_HOME}login.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOGS_HOME}login.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<logger name="login" level="info" additivity="false">
<appender-ref ref="LOGIN-LOG"/>
<appender-ref ref="STDOUT"/>
</logger>
<root level="error">
<appender-ref ref="LOGIN-LOG"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>