UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserCallbackController.java
@@ -249,13 +249,10 @@ String json = JSONObject.toJSONString(aliSms); try { redisUtil.setStrValue("code:"+phone, code,15 * 60 * 1000); aLiSendSms.sendSms(phone, "SMS_467580138", json); SmsUtil.sendZTHYSms(phone, "您的验证码是:" + code + ",请勿将验证码透露给他人!"); } catch (Exception e) { e.printStackTrace(); } // msgUtils.sendMsg(dto.getPhone(), code); return ResultUtil.success("发送短信验证码成功!"); } return ResultUtil.error("请输入手机号"); UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/UserInfoController.java
@@ -731,7 +731,7 @@ // if(!types.contains(type)){ // return ResultUtil.error("请上传图片文件(jpg/jpeg/png)"); // } String s = OssUploadUtil.ossUpload(request, file); String s = ObsUploadUtil.obsUpload(request, file); return ResultUtil.success(s); }catch (Exception e){ e.printStackTrace(); UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
@@ -131,7 +131,7 @@ sb.append((int) (random.nextDouble() * 10)); } String authCode = sb.toString(); String sms = "短信验证码【" + authCode + "】已发到您的手机,验证码将在5分钟后失效,请及时登录!"; String sms = "您的验证码是:" + authCode + ",请勿将验证码透露给他人!"; //发送验证码短信 redisUtil.setStrValue(phone, authCode, 5 * 60);//设置五分钟过期 @@ -150,15 +150,7 @@ templateCode = "c230a6b92504473c97c17741e1cc0b9d";//修改密码 break; } aLiSendSms.sendSms(phone, "SMS_467580138", "{\"code\":\"" + authCode + "\"}"); // HuaWeiSMSUtil.sendSms("[\"" + authCode + "\"]", phone, "8822061324669", templateCode); // String sData = aLiSendSms.sendSms(phone, templateCode, "{\"code\":\"" + authCode + "\"}"); //// JSONObject jsonObject = JSON.parseObject(sData); //// String message = jsonObject.getString("Message"); //// if(!"OK".equals(message)){ //// System.err.println(message); //// return ResultUtil.error(message); //// } SmsUtil.sendZTHYSms(phone, sms); System.out.println(sms); return ResultUtil.success(); } UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ALiSendSms.java
@@ -21,8 +21,8 @@ // 设置鉴权参数,初始化客户端 private DefaultProfile profile = DefaultProfile.getProfile( "cn-hangzhou",// 地域ID "LTAI5tR4whv88Y5CUucCJEu6",// 您的AccessKey ID "2fObO6LE6U2OzrUfXw9YBlQWHohFvg");// 您的AccessKey Secret "1111",// 您的AccessKey ID "1111");// 您的AccessKey Secret private IAcsClient client = new DefaultAcsClient(profile); private static void log_print(String functionName, Object result) { UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/AmapGeocoding.java
@@ -11,7 +11,7 @@ public class AmapGeocoding { private static final String AMAP_GEOCODING_API = "https://restapi.amap.com/v3/geocode/regeo"; private static final String AMAP_KEY = "116e73b6d14f7da0292daa6037955749"; // 替换为你的高德地图API Key private static final String AMAP_KEY = "b186a87ff13d88eb08fac9997519af5e"; // 替换为你的高德地图API Key public static String getCityCode(double latitude, double longitude) throws Exception { String url = AMAP_GEOCODING_API + "?location=" + longitude + "," + latitude UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ChinaMobileUtil.java
@@ -15,9 +15,9 @@ @Component public class ChinaMobileUtil { private String APIKey = "zj42494b1bdd416b9762229af6b5cbbd"; private String APIKey = "1111"; private String SecretKey = "30323561316534653735613230316339"; private String SecretKey = "111"; @Autowired private HttpClientUtil httpClientUtil; UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDFalconUtil.java
@@ -21,7 +21,7 @@ @Component public class GDFalconUtil implements ApplicationRunner { private String key = "8fc6a7da12d64696e9727605d81f72de"; private String key = "b186a87ff13d88eb08fac9997519af5e"; @Autowired private RestTemplate restTemplate; UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapElectricFenceUtil.java
@@ -33,7 +33,7 @@ @Autowired private IGDInterfaceService gdInterfaceService; private String key = "8fc6a7da12d64696e9727605d81f72de"; private String key = "b186a87ff13d88eb08fac9997519af5e"; private JSONArray jsonArray = new JSONArray(); UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GDMapGeocodingUtil.java
@@ -20,7 +20,7 @@ @Component public class GDMapGeocodingUtil { private String key = "8fc6a7da12d64696e9727605d81f72de"; private String key = "b186a87ff13d88eb08fac9997519af5e"; @Autowired private RestTemplate restTemplate; UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/HuaWeiSMSUtil.java
@@ -40,8 +40,8 @@ public static void sendSms(String code,String phone,String sender,String templateId) throws Exception{ //必填,请参考"开发准备"获取如下数据,替换为实际值 String url = "https://smsapi.cn-north-4.myhuaweicloud.com:443/sms/batchSendSms/v1"; //APP接入地址+接口访问URI String appKey = "7TK0Mo5YEF220G1pNF6fOwH6uEql"; //APP_Key String appSecret = "HTqSmIR0buStzPwSQrhfFNE7psCm"; //APP_Secret String appKey = "1111"; //APP_Key String appSecret = "1111"; //APP_Secret //条件必填,国内短信关注,当templateId指定的模板类型为通用模板时生效且必填,必须是已审核通过的,与模板类型一致的签名名称 //国际/港澳台短信不用关注该参数 UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/ObsUploadUtil.java
@@ -11,18 +11,17 @@ public class ObsUploadUtil { //OBS图片访问域名 public static String endPoint = "obs.cn-north-9.myhuaweicloud.com"; public static String accessKeyId = "OELF1ZVCZ5BGRYE5IGPX"; public static String accessKeySecret = "D3ZQCQda8tlSPTO9OPWTPJ51kLQFDu7hI6NX4u96"; public static String bucketName = "kuaiyuncx"; public static String oss_domain = "https://kuaiyuncx.obs.cn-north-9.myhuaweicloud.com/"; public static String endPoint = "obs.cn-north-4.myhuaweicloud.com"; public static String accessKeyId = "9L2JQW43N6QSKCSHXOHH"; public static String accessKeySecret = "svg1NDBIwAYuiOee4gQB9rw1c87ug2mv7jYkH8o5"; public static String bucketName = "anhenew"; public static String oss_domain = "https://anhenew.obs.cn-north-4.myhuaweicloud.com/"; // 创建ObsClient实例 public static ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endPoint); public static String obsUpload(HttpServletRequest request, MultipartFile file) throws IOException{ //CommonsMultipartFile file = (CommonsMultipartFile)multipartFile; String fileName = ""; if(file!=null && !"".equals(file.getOriginalFilename()) && file.getOriginalFilename()!=null){ InputStream content = file.getInputStream();//获得指定文件的输入流 UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/OssUploadUtil.java
@@ -13,9 +13,9 @@ public class OssUploadUtil { //OSS图片访问域名 public static String oss_domain = "http://bao-weiqing.oss-cn-hangzhou.aliyuncs.com/"; public static String accessKeyId = "LTAI5tR4whv88Y5CUucCJEu6"; public static String accessKeySecret = "2fObO6LE6U2OzrUfXw9YBlQWHohFvg"; public static String bucketName="bao-weiqing"; public static String accessKeyId = "111"; public static String accessKeySecret = "111"; public static String bucketName="111"; public static String endpoint = "oss-cn-hangzhou.aliyuncs.com"; public static OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret); UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PayMoneyUtil.java
@@ -72,16 +72,15 @@ @Value("${callbackPath}") private String callbackPath;//支付回调网关地址 private String app_cert_path = "/usr/local/server/cer/zhifubao/user/app_cert_path.crt";//应用公钥证书路径 private String app_cert_path = "/root/server/app/cert/ali/appCertPublicKey_2021003115600201.crt";//应用公钥证书路径 private String alipay_cert_path = "/usr/local/server/cer/zhifubao/user/alipay_cert_path.crt";//支付宝公钥证书文件路径 private String alipay_cert_path = "/root/server/app/cert/ali/alipayCertPublicKey_RSA2.crt";//支付宝公钥证书文件路径 private String alipay_root_cert_path = "/usr/local/server/cer/zhifubao/user/alipay_root_cert_path.crt";//支付宝CA根证书文件路径 private String alipay_root_cert_path = "/root/server/app/cert/ali/alipayRootCert.crt";//支付宝CA根证书文件路径 @Autowired private HttpClientUtil httpClientUtil; private Map<String, JSONObject> order = new HashMap<>();//存储支付订单用于主动查询支付结果 /** @@ -604,7 +603,7 @@ Map<String, String> map1 = null; String body1 = null; try { String certPath = "/usr/local/server/cert/weixin/apiclient_cert.p12"; String certPath = "/root/server/app/cert/weixin/apiclient_cert.p12"; body1 = httpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12"); } catch (Exception e) { e.printStackTrace(); @@ -868,7 +867,7 @@ xmlString.append("</xml>"); Map<String, String> map1 = null; String certPath = "/usr/local/server/cert/weixin/apiclient_cert.p12";//证书地址 String certPath = "/root/server/app/cert/weixin/apiclient_cert.p12";//证书地址 String body1 = httpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12"); //将结果xml解析成map body1 = body1.replaceAll("<!\\[CDATA\\[",""); @@ -945,7 +944,7 @@ xmlString.append("</xml>"); Map<String, String> map1 = null; String certPath = "/usr/local/server/cert/weixin/apiclient_cert.p12";//证书地址 String certPath = "/root/server/app/cert/weixin/apiclient_cert.p12";//证书地址 String body1 = httpClientUtil.pushHttpsRequsetXml(url, xmlString.toString(), new HashMap<>(), mchId, certPath, "PKCS12"); //将结果xml解析成map body1 = body1.replaceAll("<!\\[CDATA\\[",""); UserAHTravel/guns-admin/src/main/resources/application.yml
@@ -13,7 +13,6 @@ application: name: user-server profiles: # active: dev active: dev mvc: static-path-pattern: /static/** @@ -35,8 +34,6 @@ log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl logging: level.root: error eureka: @@ -56,9 +53,9 @@ spring: datasource: url: jdbc:mysql://1.95.6.206:3306/nttravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true url: jdbc:mysql://127.0.0.1:3306/ahtravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username: root password: Xiwang2024! password: 123456 db-name: guns #用来搜集数据库的所有表 filters: wall,mergeStat @@ -73,22 +70,7 @@ #spring: # datasource: ## url: jdbc:mysql://192.168.110.34:3306/nttravel?useSSL=false&serverTimezone=GMT&useUnicode=true&&characterEncoding=utf-8&&serverTimezone=UTC& # url: jdbc:mysql://192.168.110.34:3306/nttravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true # username: root # password: 123456 # db-name: guns #用来搜集数据库的所有表 # filters: wall,mergeStat #spring: # datasource: # url: jdbc:mysql://127.0.0.1:3306/fbtravel?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai # username: root # password: 123456 # db-name: guns #用来搜集数据库的所有表 # filters: wall,mergeStat #多数据源情况的配置 guns: @@ -107,37 +89,33 @@ wx: grantType: authorization_code #填authorization_code appid: wxc89ecab90d24edd8 #应用唯一标识,在微信开放平台提交应用审核通过后获得 appSecret: bca863174d22736a4a9758a67484947e #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 appletsAppid: wxe91f1af7638aa5dd #小程序APPid appletsAppSecret: a787e1a462715604e0c9528b6d8960d1 # mchId: 1677823911 #微信支付分配的商户号 key: CnqmrOgKqOiEyytQtoyxuaRgRGjcWFnD #key为商户平台设置的密钥key: appid: 111 #应用唯一标识,在微信开放平台提交应用审核通过后获得 appSecret: 111 #应用密钥AppSecret,在微信开放平台提交应用审核通过后获得 appletsAppid: wx1e3ffc473b238a2a #小程序APPid appletsAppSecret: 6346afbc7afc56a008ef888ed5b74500 # mchId: 1618978168 #微信支付分配的商户号 key: BTisLYCrwstKZRTBZef5pe51SCA7Kxe1 #key为商户平台设置的密钥key: --- alipay: appid: 2021003183602081 #应用程序唯一标识 appPrivateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCh2Oi+GQ1MolFx3+urEOPlYOFpUJhZlVHC2hooRsarMvI/XTnA/yR84QwkgqbZVSKLNyNuJ2MOcyuGGnNThlcgi6hq1sZCEOvxZrraLi85Zu295HPAcZdVNwWyOLSwiEQsS759fayDvVj0aVVIg88sy6NptpXgYtEpWj1NJkxrmb39fZeebPFnerDNDLeim5r6tnMcICTx41Cvkv23uXOeG79WY3F8e4DwsId/lc2VO8c0hQ2e3c2XXEYONSNSnnlLKtQT/gOu34ttKAeEc4SVeIKCsAG4XV4JxnnaJ7Muhvfpawf8jbOv+lYKd+JWUmbj6v0JXnD+uUBhWsojbWv7AgMBAAECggEBAJDmtYG0xi5tSMPOOZ2/knoD4ew7JxtVT41HXZHfw/D0vOQ0IAgFpnJTvl5VxvHfgfzoEcWGZ+5A+J+owMXwCcNupgt5XKk7ozJOyk2aeddHquSPS37pdBbsGyJ0GHnQllCeQ97wjGqqNKEmSR+SOwMdEqILwWXSsvb1/to6xsKxxlxSrTfCAGImmdbJ3latr5PWOcLwxxRArEuDb8j68pvbuwtGVueJu8q/hcoZ9ne8935wy/85HO91gl5CbJuqk/6YN39w/sazcHHsMo01j1TQlCSIV315nM1kNt4dmWcLWPFvG7TcOZNPSDA1BXTxEry6wimBBh0tETJY1mjxOckCgYEA24xF+/r7xdbenlB/uhw21i+gNLPEeJb2Ng6V6CwhX96g7QPdiymaSJn6sEeJTc0MPm0KCohtPdM+qDXCGq+5hLo0pI52ZCNYEUAZIuJrZLeZoK3b7RUAZjD3A2/LiTvMtZaomyovH9wLgDsn26oqUSLxw901FyL+9pxpBWg0z08CgYEAvLgcmTlLFJasoCOOIgTrxtvt0nqejKu691lEInQhg5KrjFSwljBSZ2043BgVA2Xl6oWopbXVUyOz/RvOdzdw8Jl6M430/FNu1rJRwRcMH31lYG66NTRZoRV9vN42qVYyXCGoaYPFHpmZnDdCs+/Pwu+V+VGQmnyfMlIWfRrKTZUCgYA4iaYYHukpaI0Jvfc2iT+B5t/d0pF88HtVLmpiUMMDekR85OrvhHYrziNls/Zi57QIe3IDhmCDdFwFW1qyHqCq0nzuB5XrccKjJpuShTZcyH8yhrNFGYxxxJhH9Uk3/QNZnAOtea6LCNKZYiKAihC9tj8GTnf2jleUUHEnKE+5NwKBgDD3oMwNNrMP6ZjfwOiI2FjQBiSAFpWvlaLKscgy0+Nc8lBGRU+jGC6oA4Hwabto/EBfEAR3avPYpsI9LdR3OUHkwPWRlwjF6VOiD16HyWh+VAiyknRtsff/KJISIqLLr+OCBD3kqAgpmNcU66Tey8zr98Eqbdf4ECKxdA5gHjAFAoGBAJISdjODKJgNDVKRzk5+EGoZ9buFyOuMxmTA0MbTScFidvVMt8jGc27b+AWcs54ZQcgGeNtl3c//K6vdrEBUTnR5tlLnlnFKzgOxlwI+i9eSOlWgz8T3+Ra3L5TIZ11kBO1I0/tB+ERLokZcgnNTERHapxr0Xu86zKjz548e/oqo #开发者应用私钥 alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAodjovhkNTKJRcd/rqxDj5WDhaVCYWZVRwtoaKEbGqzLyP105wP8kfOEMJIKm2VUiizcjbidjDnMrhhpzU4ZXIIuoatbGQhDr8Wa62i4vOWbtveRzwHGXVTcFsji0sIhELEu+fX2sg71Y9GlVSIPPLMujabaV4GLRKVo9TSZMa5m9/X2XnmzxZ3qwzQy3opua+rZzHCAk8eNQr5L9t7lznhu/VmNxfHuA8LCHf5XNlTvHNIUNnt3Nl1xGDjUjUp55SyrUE/4Drt+LbSgHhHOElXiCgrABuF1eCcZ52iezLob36WsH/I2zr/pWCnfiVlJm4+r9CV5w/rlAYVrKI21r+wIDAQAB #应用公钥 alipay_public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsi4M2NzIx0UQVa7pSXZnAqzNWgGaFmfjOrkwtlxnCdnqcl/9TnXNc86N+EBnBa7xKeb6hrGn/ZE+Ex6imZMp5V41+lJZ6Ynqk3zAvaPLgiq2DU4PHRBTaJZlcoBONemHgggGq2NqQRUUNfty9ZHZejDJic1WOX+BypEZgph1yZ6z4CcxeXXCHYlWViKvwGFRZtuvcypP3Uv7juIA460C1y/+etDxaUC4LPIxQJeCI9rPCTQb54rkJd0Htbvv525tVovhJxXvF9J/XE2LzYier7T8tQJ/TYGvVvZoMmyWWIO3SBuWwjp1nSh9tfbfXTRIUJjWVFTMS04WR6oG9tDS+QIDAQAB #支付宝公钥 appid: 2021003115600201 #应用程序唯一标识 appPrivateKey: 1111 #开发者应用私钥 alipayPublicKey: 111 #应用公钥 alipay_public_key: 111 #支付宝公钥 --- juhe: #聚合数据 appKey: 75897e3a893ed777055efc44b7b68914 # appKey: 93444ad1bc813182acbc1240ba80f5c7 # --- filePath: /usr/local/server/orderPostionFile/ #存储订单轨迹文件路径 #filePath: C:/orderPostionFile/ #存储订单轨迹文件路径 filePath: /root/server/app/orderPostionFile/ #存储订单轨迹文件路径 #支付回调地址 #正式环境 callbackPath: https://weilaigo.cn/user #测试环境 #callbackPath: http://121.37.97.220:81/user callbackPath: http://1.95.8.79:81/user --- UserAHTravel/guns-admin/src/main/resources/logback-spring.xml
@@ -1,119 +1,230 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒当scan为true时,此属性生效。默认的时间间隔为1分钟。 debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> <!--文件名称需要采取官方规定的方式 带后缀--> <configuration scan="false" scanPeriod="60 seconds" debug="false"> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,比如: 如果设置为WARN,则低于WARN的信息都不会输出 --> <!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true --> <!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> <configuration scan="true" scanPeriod="10 seconds"> <contextName>logback</contextName> <!-- 定义日志的根目录 --> <property name="LOG_HOME" value="/usr/local/server/logs" /> <!--<property name="LOG_HOME" value="d:/logs/" />--> <!-- 定义日志文件名称 --> <property name="LOG_FILE_NAME" value="user_log"></property> <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 --> <property name="log.path" value="/root/server/app/logs/user"/> <!--按照官方规定 采用带后缀的命名方式,可以使用其高级Profile功能--> <springProfile name="dev"> <!-- ch.qos.logback.core.ConsoleAppender 表示控制台输出 --> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <!-- 日志输出格式: %d表示日期时间, %thread表示线程名, %-5level:级别从左显示5个字符宽度 %logger{50} 表示logger名字最长50个字符,否则按照句点分割。 %msg:日志消息, %n是换行符 --> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern> </layout> <!--0. 日志格式和颜色渲染 --> <!-- 彩色日志依赖的渲染类 --> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> <!-- 彩色日志格式 --> <property name="CONSOLE_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 name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>debug</level> </filter> <encoder> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> <!-- 设置字符集 --> <charset>UTF-8</charset> </encoder> </appender> <!-- logger主要用于存放日志对象,也可以定义日志类型、级别 name:表示匹配的logger类型前缀,也就是包的前半部分 level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出, false:表示只用当前logger的appender-ref,true: 表示当前logger的appender-ref和rootLogger的appender-ref都有效 --> <!-- hibernate logger --> <!-- <logger name="xxxx" level="debug" /> --> <!-- Spring framework logger --> <logger name="org.springframework" level="debug" additivity="false"></logger> <!-- mybatis日志打印--> <logger name="org.apache.ibatis" level="debug" /> <logger name="java.sql" level="debug" /> <logger name="com.stylefeng.guns.modular.system.dao" level="debug"></logger> <!-- root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应, 要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。 --> <root level="info"> <appender-ref ref="stdout" /> </root> </springProfile> <springProfile name="produce"> <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 --> <appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 指定日志文件的名称 --> <file>${LOG_HOME}/${LOG_FILE_NAME}.log</file> <!-- 当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名 TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责触发滚动。 --> <!--2. 输出到文档--> <!-- 2.1 level为 DEBUG 日志,时间滚动输出 --> <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/debug.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动 %i:当文件大小超过maxFileSize时,按照i进行文件滚动 --> <fileNamePattern>${LOG_HOME}/${LOG_FILE_NAME}/%d{yyyy-MM-dd}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern> <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每天滚动, 且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。注意,删除旧文件是, 那些为了归档而创建的目录也会被删除。 --> <MaxHistory>10</MaxHistory> <!-- 当日志文件超过maxFileSize指定的大小是,根据上面提到的%i进行日志文件滚动 注意此处配置SizeBasedTriggeringPolicy是无法实现按文件大小进行滚动的,必须配置timeBasedFileNamingAndTriggeringPolicy --> <!-- 日志归档 --> <fileNamePattern>${log.path}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>180</maxHistory> </rollingPolicy> <!-- 日志输出格式: --> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern> </layout> <!-- 此日志文档只记录debug级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>debug</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.2 level为 INFO 日志,时间滚动输出 --> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/info.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天日志归档路径以及格式 --> <fileNamePattern>${log.path}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>180</maxHistory> </rollingPolicy> <!-- 此日志文档只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.3 level为 WARN 日志,时间滚动输出 --> <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/warn.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>180</maxHistory> </rollingPolicy> <!-- 此日志文档只记录warn级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>warn</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.4 level为 ERROR 日志,时间滚动输出 --> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/error.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>180</maxHistory> </rollingPolicy> <!-- 此日志文档只记录ERROR级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 2.5 所有 除了DEBUG级别的其它高于DEBUG的 日志,记录到一个文件 --> <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/all.log</file> <!--日志文档输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文档保留天数--> <maxHistory>180</maxHistory> </rollingPolicy> <!-- 此日志文档记录除了DEBUG级别的其它高于DEBUG的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>DENY</onMatch> <onMismatch>ACCEPT</onMismatch> </filter> </appender> <!-- logger主要用于存放日志对象,也可以定义日志类型、级别 name:表示匹配的logger类型前缀,也就是包的前半部分 level:要记录的日志级别,包括 TRACE < DEBUG < INFO < WARN < ERROR < FATAL additivity:作用在于children-logger是否使用 rootLogger配置的appender进行输出, false:表示只用当前logger的appender-ref,true: 表示当前logger的appender-ref和rootLogger的appender-ref都有效 <logger>用来设置某一个包或者具体的某一个类的日志打印级别、 以及指定<appender>。<logger>仅有一个name属性, 一个可选的level和一个可选的addtivity属性。 name:用来指定受此logger约束的某一个包或者具体的某一个类。 level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。 如果未设置此属性,那么当前logger将会继承上级的级别。 addtivity:是否向上级logger传递打印信息。默认是true。 <logger name="org.springframework.web" level="info"/> <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/> --> <!-- hibernate logger --> <!-- <logger name="xxxx" level="debug" /> --> <!-- Spring framework logger --> <logger name="org.springframework" level="debug" additivity="false"></logger> <!-- mybatis日志打印--> <logger name="org.apache.ibatis" level="debug" /> <logger name="java.sql" level="debug" /> <logger name="com.stylefeng.guns.modular.system.dao" level="debug"></logger> <!-- root与logger是父子关系,没有特别定义则默认为root,任何一个类只会和一个logger对应, 要么是定义的logger,要么是root,判断的关键在于找到这个logger,然后判断这个logger的appender和level。 root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性 level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 不能设置为INHERITED或者同义词NULL。默认是DEBUG 可以包含零个或多个元素,标识这个appender将会添加到这个logger。 --> <root level="debug"> <appender-ref ref="appLogAppender" /> <!-- 4 最终的策略: 基本策略(root级) + 根据profile在启动时, logger标签中定制化package日志级别(优先级高于上面的root级)--> <springProfile name="dev"> <root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="DEBUG_FILE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="WARN_FILE" /> <appender-ref ref="ERROR_FILE" /> <appender-ref ref="ALL_FILE" /> </root> <logger name="com.baomidou.mybatisplus" level="info"/> <logger name="com.stylefeng.guns.modular.system.dao" level="info"/> <logger name="business-log" level="warn"/> </springProfile> <springProfile name="fat"> <root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="DEBUG_FILE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="WARN_FILE" /> <appender-ref ref="ERROR_FILE" /> <appender-ref ref="ALL_FILE" /> </root> <logger name="com.baomidou.mybatisplus" level="debug"/> <logger name="com.stylefeng.guns.modular.system.dao" level="error"/> <logger name="business-log" level="warn"/> </springProfile> <springProfile name="produce"> <root level="info"> <!-- 生产环境最好不配置console写文件 --> <appender-ref ref="DEBUG_FILE" /> <appender-ref ref="INFO_FILE" /> <appender-ref ref="WARN_FILE" /> <appender-ref ref="ERROR_FILE" /> <appender-ref ref="ALL_FILE" /> </root> <logger name="com.baomidou.mybatisplus" level="error"/> <logger name="com.stylefeng.guns.modular.system.dao" level="debug"/> <logger name="business-log" level="warn"/> </springProfile> </configuration> UserAHTravel/guns-admin/src/main/resources/redis.properties
@@ -2,12 +2,11 @@ # RedisÊý¾Ý¿âË÷Òý£¨Ä¬ÈÏΪ0£© spring.redis.database=0 # Redis·þÎñÆ÷µØÖ· spring.redis.host=1.95.6.206 spring.redis.host=127.0.0.1 # Redis·þÎñÆ÷Á¬½Ó¶Ë¿Ú spring.redis.port=6379 # Redis·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£© spring.redis.password=Xiwang2024! #spring.redis.password=123456 spring.redis.password=123456 #spring.redis.password= # Á¬½Ó³Ø×î´óÁ¬½ÓÊý£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£© spring.redis.jedis.pool.max-active=1024