控制台输出
使用 @Aspect
切面 , 指定 cn.xxx.controller.*.*(..))
包下面的方法
@Aspect
@Component
@Slf4j
public class ControllerAspect {
@Autowired
HttpServletRequest request;
@Around("execution(* cn.xxx.controller.*.*(..))")
public Object handler(ProceedingJoinPoint pjp) throws Throwable {
log.info("#--------------------------------#");
log.info("# 请求路径 : " + request.getMethod() + " " request.getServletPath());
log.info("# 处理程序 : " + pjp.getTarget());
log.info("# 请求参数 : " + Arrays.toString(pjp.getArgs()));
try {
Object proceed = pjp.proceed(pjp.getArgs());
log.info("# 返回值 :" + proceed);
return proceed;
} catch (Throwable e) {
log.info("# 异常抛出 : " + e.getMessage());
throw e;
} finally {
log.info("#--------------------------------#");
}
}
}
配置文件参考
application.yml
logging:
config: classpath:logback.xml
logback.xml
下面的输出路径如果不使用绝对路径,那么系统会默认在项目根目录下面输出。
logs/info/%i.%d{yyyy-MM-dd}.log
: 输出到D:/projectxxx/xxx/logs/info/xxx.log
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--输出样式-->
<property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 按照上面配置的LOG_PATTERN来打印日志 -->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--输出相对路径-->
<fileNamePattern>logs/info/%i.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志保存30天 -->
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 单个日志文件的最大,超过则新建日志文件存储 -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- 按照上面配置的LOG_PATTERN来打印日志 -->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<!--使用 INFO 级别来输出-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--输出相对路径-->
<fileNamePattern>logs/error/%i.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志保存30天 -->
<maxHistory>30</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 单个日志文件的最大,超过则新建日志文件存储 -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- 按照上面配置的LOG_PATTERN来打印日志 -->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<!--使用 ERROR 级别来输出-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="INFO_FILE" />
<appender-ref ref="ERROR_FILE" />
</root>
</configuration>