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

金色 网站 模板注册建公司网站

金色 网站 模板,注册建公司网站,自己做个网站多少钱,机器设备行业网站模板前言 在开发 Java 应用时#xff0c;日志记录是不可或缺的一部分。日志可以记录应用的运行状态、错误信息和调试信息#xff0c;帮助开发者快速定位和解决问题。Spring Boot 项目默认集成了 SLF4J 和 Logback#xff0c;使得日志配置变得简单而灵活。本文将详细介绍如何在 …前言 在开发 Java 应用时日志记录是不可或缺的一部分。日志可以记录应用的运行状态、错误信息和调试信息帮助开发者快速定位和解决问题。Spring Boot 项目默认集成了 SLF4J 和 Logback使得日志配置变得简单而灵活。本文将详细介绍如何在 Spring Boot 项目中配置 SLF4J 和 Logback包括基本的日志配置、日志文件的输出路径、日志级别、日志格式和环境区分配置。 1. 引入依赖 Spring Boot 项目默认已经包含了 SLF4J 和 Logback 的依赖如果你使用的是 Spring Initializr 初始化的项目通常不需要额外添加依赖。如果你的项目中没有这些依赖可以在pom.xml中添加如下依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId /dependency2. 基本日志配置 Spring Boot 允许通过application.yml或application.properties文件进行简单的日志配置。以下是一个基本的配置示例 application.yml logging:level:root: INFOcom.example.yourpackage: DEBUG # 你的项目包路径file:name: application.logpattern:console: %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%nfile: %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%napplication.properties logging.level.rootINFO logging.level.com.example.yourpackageDEBUG # 你的项目包路径 logging.file.nameapplication.log logging.pattern.console%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n logging.pattern.file%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n以上配置将日志级别设置为INFO并为你的项目包设置为DEBUG级别。同时设置了日志文件的名称和日志输出的格式。 3. 配置 Logback Logback 是 SLF4J 的一个实现提供了更强大的日志配置功能。你可以通过logback-spring.xml文件进行更详细的日志配置。以下是一个示例配置文件 logback-spring.xml configuration!-- 定义日志文件的路径和名称 --property nameLOG_PATH value/var/log/yourapp /property nameLOG_FILE value${LOG_PATH}/application.log /!-- 控制台日志输出配置 --appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n/pattern/encoder/appender!-- 文件日志输出配置 --appender nameFILE classch.qos.logback.core.rolling.RollingFileAppenderfile${LOG_FILE}/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 日志文件的滚动策略 --fileNamePattern${LOG_PATH}/application-%d{yyyy-MM-dd}.log/fileNamePatternmaxHistory30/maxHistory !-- 保留30天的日志文件 --/rollingPolicyencoderpattern%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n/pattern/encoder/appender!-- 指定日志级别 --logger nameorg.apache.ibatis levelDEBUGappender-ref refFILE /appender-ref refSTDOUT //loggerlogger namecom.example.yourpackage levelDEBUGappender-ref refFILE /appender-ref refSTDOUT //logger!-- 根日志级别 --root levelINFOappender-ref refFILE /appender-ref refSTDOUT //root /configuration4. 环境区分配置 在实际项目中不同环境如开发环境、测试环境、生产环境的日志配置需求可能会有所不同。Spring Boot 支持多配置文件来区分不同环境。你可以在src/main/resources目录下创建多个配置文件例如 application-dev.yml开发环境配置application-test.yml测试环境配置application-prod.yml生产环境配置 application-dev.yml spring:profiles: devlogging:level:root: DEBUGcom.example.yourpackage: DEBUGfile:name: application-dev.logpattern:console: %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%nfile: %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%napplication-test.yml spring:profiles: testlogging:level:root: INFOcom.example.yourpackage: INFOfile:name: application-test.logpattern:console: %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%nfile: %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%napplication-prod.yml spring:profiles: prodlogging:level:root: WARNcom.example.yourpackage: INFOfile:path: /var/log/yourappname: application-prod.logpattern:console: %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%nfile: %d{yyyy-MM-dd HH:mm:ss} %thread %-5level %logger{36} - %msg%n启动应用时可以通过命令行参数指定使用哪个配置文件 java -jar -Dspring.profiles.activeprod yourapp.jar5. 日志文件路径权限 确保 Spring Boot 应用在服务器上有写日志文件的权限。你可以通过以下命令检查和修改目录权限 # 检查目录权限 ls -ld /var/log/yourapp# 修改目录权限 sudo chown -R youruser:yourgroup /var/log/yourapp sudo chmod -R 755 /var/log/yourapp6. 日志文件查看 启动应用后检查日志文件是否正确生成并记录了日志。你可以在服务器上使用以下命令查看日志文件 # 查看日志文件 tail -f /var/log/yourapp/application-prod.log7. 使用自定义拦截器 如果你需要在日志中记录特定的信息例如 SQL 执行时间可以使用自定义拦截器。以下是一个示例拦截器 SqlTimingInterceptor.java package com.example.yourpackage.interceptor;import org.apache.ibatis.executor.Executor; import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.slf4j.Slf4jImpl; import org.apache.ibatis.plugin.*;import java.sql.Statement; import java.util.Properties;Intercepts(Signature(type StatementHandler.class, method query, args {Statement.class, ResultHandler.class})) public class SqlTimingInterceptor implements Interceptor {Overridepublic Object intercept(Invocation invocation) throws Throwable {long start System.currentTimeMillis();try {return invocation.proceed();} finally {long end System.currentTimeMillis();long timeTaken end - start;StatementHandler statementHandler (StatementHandler) invocation.getTarget();String sql (String) SystemMetaObject.forObject(statementHandler).getValue(delegate.boundSql.sql);Log log Slf4jImpl.create(this.getClass());log.debug(SQL: sql);log.debug(执行时间: timeTaken ms);}}Overridepublic Object plugin(Object target) {return Plugin.wrap(target, this);}Overridepublic void setProperties(Properties properties) {// 可以设置一些自定义属性} }MyBatisConfig.java package com.example.yourpackage.config;import com.example.yourpackage.interceptor.SqlTimingInterceptor; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DriverManagerDataSource;import javax.sql.DataSource; import java.util.Properties;Configuration MapperScan(com.example.yourpackage.mapper) public class MyBatisConfig {Beanpublic DataSource dataSource() {DriverManagerDataSource dataSource new DriverManagerDataSource();dataSource.setDriverClassName(org.postgresql.Driver);dataSource.setUrl(jdbc:postgresql://localhost:5432/yourdb);dataSource.setUsername(yourusername);dataSource.setPassword(yourpassword);return dataSource;}Beanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean factoryBean new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource);factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(classpath:mapper/*.xml));// 注册拦截器SqlTimingInterceptor sqlTimingInterceptor new SqlTimingInterceptor();Properties properties new Properties();properties.setProperty(someProperty, someValue); // 根据需要设置拦截器属性sqlTimingInterceptor.setProperties(properties);factoryBean.setPlugins(new Interceptor[]{sqlTimingInterceptor});return factoryBean.getObject();} }希望你喜欢这篇文章请点关注和收藏吧。你的关注和收藏会是我努力更新的动力祝关注和收藏的帅哥美女们今年都能暴富。如果有更多问题欢迎随时提问
http://www.hkea.cn/news/14465352/

相关文章:

  • 2018什么语言做网站比较好wordpress更改站点地址
  • 网站推广句子公司注册成本
  • 郑州怎样建设公司网站社交网站开发公司
  • 168网站建设太原自助建站软件
  • 有声小说网站开发北京网站制作的公司哪家好
  • 宁波提高网站排名成都网站系统开发
  • 做彩票网站推广犯法吗网上注册公司流程及资料
  • 网站服务器地址怎么查询腾讯官方网站
  • 网站排名alexa零陵区住房和城乡建设局网站
  • 南京装修公司做网站二级域名网站如何申请吗
  • 肥城网站建设价格模板网传奇手游
  • 黄冈网站推广策略广东省建设八大员网站
  • 手机网站建设平台合同河南省建设工程标准定额管理网站
  • 平阴县网站建设全案策划
  • 环保推广哪个网站好赤峰注册公司流程和费用
  • 网站同时做竞价和seo做网站的哪里好
  • wordpress淘宝客建站教程视频鄂尔多斯 网站建设
  • 做外贸怎么登陆国外网站wordpress 默认头像 本地
  • 哪个网站教做饭做的好成立公司注册资金一定都要到位吗
  • 怎么在百度上做网站推广成华区网站建设
  • 程序员网站开发框架品牌设计的要求有哪些
  • 手机网站建设维护协议书如何做免费的网站
  • 襄樊公司网站建设网站导航设计模板源码
  • 网站体验方案1空间做2个网站吗
  • 如何做网站弹窗广告办公软件
  • 攻击Wordpress网站制作图片网站
  • 京挑客网站建设谷歌搜索引擎网页版入口
  • 建设一个电影网站怎么做简约创意男装字体logo设计
  • 建设网站费用唐山网站制作企业
  • 哈尔滨发布信息的网站深圳工程交易中心网