1.Mybatis整合Logback 2.SqlSession为什么可以提交事务 3.insert和delete底层实现的方式4.完成超市账单管理系统的登陆功能...

mac2022-07-05  32

1.springmvc,mybatis,logback整合相关

1.利用spring-aop实现日志自动化

1.1添加相关依赖(spring-aop,aspectj)

<span style="white-space:pre"> </span><dependency> <span style="white-space:pre"> </span><groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.5.4</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.9</version> </dependency>1.2 spring-mvc.xml添加配置<span style="white-space:pre"> </span><aop:aspectj-autoproxy proxy-target-class="true"/>这条配置是将自动生成代理,proxy-target-class="true"配置是为实现类生成代理,若不加此项只能为接口生成代理

1.3 配置切面

@Component@Aspectpublic class LogAspect { private Log log = LogFactory.getLog(LogAspect.class); @Pointcut("execution(* com.jiechengkeji.manager..*(..))") public void aspect() { } @Around("aspect()") public Object around(ProceedingJoinPoint point) { long start = System.currentTimeMillis(); String uuid = UUID.randomUUID().toString();//由于开始记录和结束记录会错开,用UUID进行配对 String before = String.format("%s.%s()--ARGS:%s (%s)", point.getTarget().getClass().getSimpleName(), MethodSignature.class.cast(point.getSignature()).getMethod().getName(), Arrays.toString(point.getArgs()), uuid); log.info(before); Object result = null; try { result = point.proceed(); } catch (Throwable e) { log.error(e); } String after = String.format("%s.%s()--RETURNS:%s TIME:%s ms (%s)", point.getTarget().getClass().getSimpleName(), MethodSignature.class.cast(point.getSignature()).getMethod().getName(), result, System.currentTimeMillis() - start, uuid); log.info(after); return result; }}

没啥说的 基本上看代码就能明白,不要忘记添加@Component注解。之前我以为和 @Controller,@Service一样是包含@Component注解的,没想到不是,排查了很长时间。

1.4 配置logback.xml

<!-- aop记日志的appender --> <appender name="aop" class="ch.qos.logback.core.rolling.RollingFileAppender"> <FileNamePattern>${log.base}/${log.methodModuleName}%d{yyyy-MM-dd}.%i.log</FileNamePattern> <!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 --> <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${log.base}/${log.methodModuleName}%d{yyyy-MM-dd}.%i.log.zip </FileNamePattern> <!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份) --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${log.max.size}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!-- 日志输出的文件的格式 --> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>

转载请注明原文地址: https://mac.8miu.com/read-408275.html
最新回复(0)