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

网站后台构建做网站用哪个电脑

网站后台构建,做网站用哪个电脑,颍上网站建设,太原做网站个人文章目录 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.laogonggong.com/news/123048.html

相关文章:

  • 成都网站设计建设推荐全网营销推广哪家正规
  • 泉州手机网站建设费用长沙房产信息网官网
  • 三亚网站定制开发公司什么是交互式网站开发
  • 深圳市福田建设股份有限公司网站北京网站优化步骤
  • 安卓盒子 做网站网站建设开发合同模板
  • 游戏网站建设平台jsp做简单校园网站
  • 莱芜网站优化加徽信xiala5中文编程
  • dns 本地 网站建设成都多享网站建设公司
  • s001网站建设wordpress水墨cms主题
  • 做的网站太大怎么办软件开发工作流程
  • 江汉路做网站的公司百度seo排名软
  • 个人网站 主机巩义推广网站哪家好
  • 如何做响应式网站设计网站的后台是开发做的
  • erp二次开发好还是网站开发好证券投资网站做哪些内容
  • 个人网站设计模版html做网站可以用思源字体吗
  • 河南省住房城乡建设厅官方网站郴州网站推广
  • 网站开发技术案例地产项目网站设计
  • 去类似美团网站做软件开发长清网站建设费用
  • 企业门户网站运营推广制作网页费用
  • 网站如何做ssl认证vscode创建网页
  • 竹业网站建设国家信息企业公示网查询官网
  • 建设银行网站在哪里修改支付密码正方教务管理系统入口
  • 站长工具seo做淘宝的导购网站
  • 怎么申请域名建立网站潮州网站开发多少钱
  • 新网站 百度推广wordpress4.6.1中文包
  • 网站上线如何做公司名字重庆建站公司网站模板
  • 做视频搬运工的网站兴义住房和城乡建设局网站
  • windows7优化大师湖南企业seo优化首选
  • 重庆网站建设-首选云慧通wordpress安装后做什么
  • 邯郸做网站就找安联网络企业网络营销策略分析案例