当前位置: 首页 > news >正文

大型网站系统图旅游网站logo

大型网站系统图,旅游网站logo,网站建设论文500字,长沙最好玩的地方排名文章目录 Spring Boot日志处理1. 日志存入数据库#xff08;AOP#xff09;2. 日志控制台打印与写入文件#xff08;logback#xff09; Spring Boot日志处理 1. 日志存入数据库#xff08;AOP#xff09; 引入aop依赖 dependencygroupIdorg.springfram… 文章目录 Spring Boot日志处理1. 日志存入数据库AOP2. 日志控制台打印与写入文件logback Spring Boot日志处理 1. 日志存入数据库AOP 引入aop依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactIdversion2.6.14/version /dependency创建自定义注解类用于在Controller层使用注解标注哪个方法需要增加日志 interface 注解类自定义注解 Target 用来说明该注解可以被声明在那些元素之前 ElementType.METHOD说明该注解只能被声明在一个类的方法前 Retention 用来说明该注解类的生命周期。 RetentionPolicy.RUNTIME注解保留在程序运行期间此时可以通过反射获得定义在某个类上的所有注解 /*** ClassName Log* Description 自定义日志注解类* Author Administrator* Date 2024/12/23 9:38*/ Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface Log {// 日志描述String value() default ; } 编写LogAspect增强类与增强方法我们使用环绕增强around /*** ClassName LogAspect* Description 日志增强类与增强方法* Author Administrator* Date 2024/12/23 9:41*/ public class LogAspect {//切入点指定当使用Log注解时进入环绕增强Pointcut(annotation(com.hz.goods.web.log.Log))public void pointcut() {}Around(pointcut())public Object around(ProceedingJoinPoint point) {try {System.out.println(执行环绕增强..............开始);Object result point.proceed();//执行方法System.out.println(结束..........);return result;} catch (Throwable throwable) {throwable.printStackTrace();}return null;} }创建controller进行测试 Log(value 轮播图列表) GetMapping(/findList) public MessageJsonCarousel findList(){ListCarousel carousels carouselService.list();return carousels!null?MessageJson.success(carousels):MessageJson.error(); }开始写入数据库 创建日志记录表sys_log DROP TABLE IF EXISTS sys_log; CREATE TABLE sys_log ( ID bigint(20) NOT NULL AUTO_INCREMENT, USERNAME varchar(50) DEFAULT NULL COMMENT 用户名, OPERATION varchar(50) DEFAULT NULL COMMENT 用户操作, TIME int(11) DEFAULT NULL COMMENT 响应时间, METHOD varchar(200) DEFAULT NULL COMMENT 请求方法, PARAMS varchar(500) DEFAULT NULL COMMENT 请求参数, IP varchar(64) DEFAULT NULL COMMENT IP地址, CREATE_TIME timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (ID) ) ENGINEInnoDB DEFAULT CHARSETutf8;创建实体类 Data TableName(sys_log) public class SysLog { TableId(value id,type IdType.AUTO) private Long id; private String username; private String operation; private Integer time; private String method; private String params; private String ip; private Date createTime; }编写Mapper层接口 public interface SysLogMapper extends BaseMapperSysLog { }导入工具类HttpContextUtils、IPUtils 修改LogAspect增强类与增强方法 Aspect Component public class LogAspect { Autowired private SysLogMapper sysLogMapper; //切入点指定当使用Log注解时进入环绕增强 Pointcut(annotation(com.hz.goods.web.log.Log)) public void pointcut() {} Around(pointcut()) public Object around(ProceedingJoinPoint point) {try {SysLog sys new SysLog();sys.setUsername(4072);//设置用户名Long start System.currentTimeMillis();//开始时间Long end System.currentTimeMillis();//结束时间Object result point.proceed();//调用目标方法Long time end - start;//执行时间sys.setTime(time.intValue());//设置执行时间//获取请求对象HttpServletRequest request HttpContextUtils.getHttpServletRequest();//获取IP地址sys.setIp(IPUtils.getIpAddr(request));//获取注解描述MethodSignature signature (MethodSignature) point.getSignature();Method method signature.getMethod();Log logAnnotation method.getAnnotation(Log.class);if (logAnnotation ! null) {sys.setOperation(logAnnotation.value());//设置操作描述}//获得请求方法名String methodName point.getTarget().getClass().getName() . point.getSignature().getName();sys.setMethod(methodName);//设置请求方法名// 请求的方法参数值Object[] args point.getArgs();// 请求的方法参数名称LocalVariableTableParameterNameDiscoverer u new LocalVariableTableParameterNameDiscoverer();String[] paramNames u.getParameterNames(method);if (args ! null paramNames ! null) {String params ;for (int i 0; i args.length; i) {params , paramNames[i] : args[i];}sys.setParams(params);}// 保存日志sysLogMapper.insert(sys);return result;} catch (Throwable throwable) {throwable.printStackTrace();}return null; } }运行测试Log 2. 日志控制台打印与写入文件logback 创建logback-spring.xml文件放入resource下并复制内容到该文件 ?xml version1.0 encodingUTF-8? configurationproperty nameLOG_CONTEXT_NAME valuelog/!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--property nameLOG_HOME valueD:/logs /!-- 定义日志上下文的名称 --contextName${LOG_CONTEXT_NAME}/contextName!-- 控制台输出 --!--appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoder classch.qos.logback.classic.encoder.PatternLayoutEncoderlt;!ndash;格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符ndash;gt;pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}:%L) - %msg%n/patterncharsetutf-8/charset/encoderfilter classch.qos.logback.classic.filter.ThresholdFilterlevelINFO/level/filter/appender--!-- 彩色日志依赖的渲染类 --conversionRule conversionWordclr converterClassorg.springframework.boot.logging.logback.ColorConverter /conversionRule conversionWordwex converterClassorg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter /conversionRule conversionWordwEx converterClassorg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter /!-- 彩色日志格式 --property nameCONSOLE_LOG_PATTERN value${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}/!--1. 输出到控制台--appender nameSTDOUT classch.qos.logback.core.ConsoleAppender!--此日志appender是为开发使用只配置最底级别控制台输出的日志级别是大于或等于此级别的日志信息--filter classch.qos.logback.classic.filter.ThresholdFilterlevelINFO/level/filterencoderPattern${CONSOLE_LOG_PATTERN}/Pattern!-- 设置字符集 --charsetUTF-8/charset/encoder/appender!--info日志统一输出到这里--appender namefile.info classch.qos.logback.core.rolling.RollingFileAppenderPrudenttrue/PrudentrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!--日志文件输出的文件名按小时生成--FileNamePattern${LOG_HOME}/%d{yyyy-MM-dd}/info/info.%d{yyyy-MM-dd-HH}.%i.log/FileNamePattern!--日志文件保留天数--MaxHistory30/MaxHistorytimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP!-- 除按日志记录之外还配置了日志文件不能超过10M(默认)若超过10M日志文件会以索引0开始 --maxFileSize10MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoder!--格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg日志消息%n是换行符--pattern %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n/patterncharsetutf-8/charset/encoder!-- 此日志文件只记录info级别的 --filter classch.qos.logback.classic.filter.LevelFilterlevelINFO/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!--错误日志统一输出到这里--appender namefile.error classch.qos.logback.core.rolling.RollingFileAppenderPrudenttrue/PrudentrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!--日志文件输出的文件名按天生成--FileNamePattern${LOG_HOME}/%d{yyyy-MM-dd}/error/error.%d{yyyy-MM-dd}.%i.log/FileNamePattern!--日志文件保留天数--MaxHistory30/MaxHistorytimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP!-- 除按日志记录之外还配置了日志文件不能超过10M(默认)若超过10M日志文件会以索引0开始 --maxFileSize10MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoder!--格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg日志消息%n是换行符--pattern %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n/patterncharsetutf-8/charset/encoder!-- 此日志文件只记录error级别的 --filter classch.qos.logback.classic.filter.LevelFilterlevelERROR/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!--warn日志统一输出到这里--appender namefile.warn classch.qos.logback.core.rolling.RollingFileAppenderPrudenttrue/PrudentrollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyFileNamePattern${LOG_HOME}/%d{yyyy-MM-dd}/warn/warn.%d{yyyy-MM-dd}.%i.log/FileNamePattern!--日志文件保留天数--MaxHistory30/MaxHistorytimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP!-- 除按日志记录之外还配置了日志文件不能超过10M(默认)若超过10M日志文件会以索引0开始 --maxFileSize10MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy/rollingPolicyencoder classch.qos.logback.classic.encoder.PatternLayoutEncoder!--格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度 %method 方法名 %L 行数 %msg日志消息%n是换行符--pattern %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{56}.%method:%L - %msg%n/patterncharsetutf-8/charset/encoder!-- 此日志文件只记录warn级别的 --filter classch.qos.logback.classic.filter.LevelFilterlevelWARN/levelonMatchACCEPT/onMatchonMismatchDENY/onMismatch/filter/appender!-- 日志输出级别 --root levelDEBUGappender-ref refSTDOUT /appender-ref reffile.error /appender-ref reffile.info /appender-ref reffile.warn //root/configuration配置application.yml文件 logging:config: classpath:logback-spring.xml编写controller测试slf4j
http://www.hkea.cn/news/14471888/

相关文章:

  • 自适应营销网站网站建设职员
  • 网站对品牌的作用手机网站的域名
  • 医疗机构 网站备案成都建设网上办事大厅
  • 做网站最小的字体是多少随州网站推广哪家好
  • 山东建设网站营销型网站和普通网站的区别
  • 网站对企业的作用jsp类型网站托管费用
  • python做的网站北京网站开开发公司
  • 淘宝开网站建设店铺分析多用户商城系统价格
  • i深建官方网站网站广告出价平台
  • 网站首页引导页模版在线设计的软件
  • 佛山技术支持 骏域网站建设网站内容有什么
  • 网站建设分享芜湖市建设厅网站
  • 公司网站建设注册免费建设一个网站
  • 煎蛋网站用什么做的一般做个小程序多少钱
  • 友情链接出售郑州厉害的seo优化顾问
  • 荣耀手机商城官方网站thinkphp做网站好吗
  • 常用的网站开发技术有哪几种河北建设广州分公司网站
  • 电影网站建设目的做PPT素材用到的网站
  • 中国那些企业做网站做得好wordpress配置教程
  • 广西兴业县建设局网站泰安住房和城乡建设局网站
  • 如何做网站清风制作咸阳网站建设哪家专业
  • 网站开发毕设设计论文建立个人网站要钱吗
  • 哪些公司做网站比较好微信网页插件 wordpress
  • 网站信息化建设总体情况wordpress照片主题
  • 北大荒建设集团网站厦门网站建设680元
  • 网站建设-部署与发布的题目网店如何推广自己的产品
  • 广州知名网站建设东莞北京网站建设价格
  • jq网站特效插件下载沈阳男科医院哪家好医
  • 潜江哪里做网站成都seo公司
  • 杭州倍世康 做网站软件平台介绍