8 changed files with 820 additions and 1 deletions
@ -0,0 +1,412 @@ |
|||
package bc.mm.mis.core.bean; |
|||
|
|||
import javax.persistence.Column; |
|||
import javax.persistence.Entity; |
|||
import javax.persistence.Id; |
|||
import javax.persistence.Table; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* user bean |
|||
*/ |
|||
@Entity |
|||
@Table(name = "users") |
|||
public class Users { |
|||
@Id |
|||
@Column(name = "user_id") |
|||
private Long userId; |
|||
private Long id; //for agent
|
|||
private String name; // angent name
|
|||
private String account; // major account
|
|||
@Column(name = "account_type") |
|||
private Integer accountTpe; // 1:phone 2:email
|
|||
private String username; // user name
|
|||
private Integer referrer; // agent refer userid
|
|||
private Long pid; //parent id
|
|||
private Integer deep; // agent deep length
|
|||
private String path; |
|||
@Column(name = "country_id") |
|||
private Integer countryIdd; //
|
|||
@Column(name = "country_code") |
|||
private String countryCode; //
|
|||
private String phone; |
|||
@Column(name = "phone_status") |
|||
private Integer phoneStatus; // verfied or no
|
|||
private String email; //
|
|||
@Column(name = "email_status") |
|||
private Integer emailStatus; |
|||
private String avatar; //
|
|||
@Column(name = "google_token") |
|||
private String googleToken; // google authontion
|
|||
@Column(name = "google_status") |
|||
private Integer googleStatus; //
|
|||
@Column(name = "second_verify") |
|||
private Integer secondVerify; |
|||
private String password; //
|
|||
private String payword; |
|||
@Column(name = "invite_code") |
|||
private String inviteCode; |
|||
@Column(name = "purchase_code") |
|||
private String purchaseCode; |
|||
@Column(name = "user_grade") |
|||
private Integer userGrade; // default value 1
|
|||
@Column(name = "user_identity") |
|||
private Integer userIdentity; // user type defalt 1
|
|||
@Column(name = "is_agency") |
|||
private Integer isAgency; |
|||
@Column(name = "is_palce") |
|||
private Integer isPalce; |
|||
@Column(name = "user_auth_level") |
|||
private Integer userAuthLevel; //
|
|||
@Column(name = "is_system") |
|||
private Integer isSystem; |
|||
@Column(name = "contract_deal") |
|||
private Integer contractDeal; |
|||
@Column(name = "login_code") |
|||
private String loginCode; |
|||
private Integer status; |
|||
@Column(name = "trade_status") |
|||
private Integer tradeStatus; |
|||
@Column(name = "trade_verify") |
|||
private Integer tradeVerify; |
|||
@Column(name = "contract_anomaly") |
|||
private Integer contractAnomaly; |
|||
@Column(name = "reg_ip") |
|||
private String regIp; |
|||
@Column(name = "last_login_time") |
|||
private Date lastLoginTime; |
|||
@Column(name = "last_login_ip") |
|||
private String lastLoginIp; |
|||
@Column(name = "created_at") |
|||
private Date createdAt; |
|||
@Column(name = "update_at") |
|||
private Date updatedAt; |
|||
|
|||
public Long getUserId() { |
|||
return userId; |
|||
} |
|||
|
|||
public void setUserId(Long userId) { |
|||
this.userId = userId; |
|||
} |
|||
|
|||
public Long getId() { |
|||
return id; |
|||
} |
|||
|
|||
public void setId(Long id) { |
|||
this.id = id; |
|||
} |
|||
|
|||
public String getName() { |
|||
return name; |
|||
} |
|||
|
|||
public void setName(String name) { |
|||
this.name = name; |
|||
} |
|||
|
|||
public String getAccount() { |
|||
return account; |
|||
} |
|||
|
|||
public void setAccount(String account) { |
|||
this.account = account; |
|||
} |
|||
|
|||
public Integer getAccountTpe() { |
|||
return accountTpe; |
|||
} |
|||
|
|||
public void setAccountTpe(Integer accountTpe) { |
|||
this.accountTpe = accountTpe; |
|||
} |
|||
|
|||
public String getUsername() { |
|||
return username; |
|||
} |
|||
|
|||
public void setUsername(String username) { |
|||
this.username = username; |
|||
} |
|||
|
|||
public Integer getReferrer() { |
|||
return referrer; |
|||
} |
|||
|
|||
public void setReferrer(Integer referrer) { |
|||
this.referrer = referrer; |
|||
} |
|||
|
|||
public Long getPid() { |
|||
return pid; |
|||
} |
|||
|
|||
public void setPid(Long pid) { |
|||
this.pid = pid; |
|||
} |
|||
|
|||
public Integer getDeep() { |
|||
return deep; |
|||
} |
|||
|
|||
public void setDeep(Integer deep) { |
|||
this.deep = deep; |
|||
} |
|||
|
|||
public String getPath() { |
|||
return path; |
|||
} |
|||
|
|||
public void setPath(String path) { |
|||
this.path = path; |
|||
} |
|||
|
|||
public Integer getCountryIdd() { |
|||
return countryIdd; |
|||
} |
|||
|
|||
public void setCountryIdd(Integer countryIdd) { |
|||
this.countryIdd = countryIdd; |
|||
} |
|||
|
|||
public String getCountryCode() { |
|||
return countryCode; |
|||
} |
|||
|
|||
public void setCountryCode(String countryCode) { |
|||
this.countryCode = countryCode; |
|||
} |
|||
|
|||
public String getPhone() { |
|||
return phone; |
|||
} |
|||
|
|||
public void setPhone(String phone) { |
|||
this.phone = phone; |
|||
} |
|||
|
|||
public Integer getPhoneStatus() { |
|||
return phoneStatus; |
|||
} |
|||
|
|||
public void setPhoneStatus(Integer phoneStatus) { |
|||
this.phoneStatus = phoneStatus; |
|||
} |
|||
|
|||
public String getEmail() { |
|||
return email; |
|||
} |
|||
|
|||
public void setEmail(String email) { |
|||
this.email = email; |
|||
} |
|||
|
|||
public Integer getEmailStatus() { |
|||
return emailStatus; |
|||
} |
|||
|
|||
public void setEmailStatus(Integer emailStatus) { |
|||
this.emailStatus = emailStatus; |
|||
} |
|||
|
|||
public String getAvatar() { |
|||
return avatar; |
|||
} |
|||
|
|||
public void setAvatar(String avatar) { |
|||
this.avatar = avatar; |
|||
} |
|||
|
|||
public String getGoogleToken() { |
|||
return googleToken; |
|||
} |
|||
|
|||
public void setGoogleToken(String googleToken) { |
|||
this.googleToken = googleToken; |
|||
} |
|||
|
|||
public Integer getGoogleStatus() { |
|||
return googleStatus; |
|||
} |
|||
|
|||
public void setGoogleStatus(Integer googleStatus) { |
|||
this.googleStatus = googleStatus; |
|||
} |
|||
|
|||
public Integer getSecondVerify() { |
|||
return secondVerify; |
|||
} |
|||
|
|||
public void setSecondVerify(Integer secondVerify) { |
|||
this.secondVerify = secondVerify; |
|||
} |
|||
|
|||
public String getPassword() { |
|||
return password; |
|||
} |
|||
|
|||
public void setPassword(String password) { |
|||
this.password = password; |
|||
} |
|||
|
|||
public String getPayword() { |
|||
return payword; |
|||
} |
|||
|
|||
public void setPayword(String payword) { |
|||
this.payword = payword; |
|||
} |
|||
|
|||
public String getInviteCode() { |
|||
return inviteCode; |
|||
} |
|||
|
|||
public void setInviteCode(String inviteCode) { |
|||
this.inviteCode = inviteCode; |
|||
} |
|||
|
|||
public String getPurchaseCode() { |
|||
return purchaseCode; |
|||
} |
|||
|
|||
public void setPurchaseCode(String purchaseCode) { |
|||
this.purchaseCode = purchaseCode; |
|||
} |
|||
|
|||
public Integer getUserGrade() { |
|||
return userGrade; |
|||
} |
|||
|
|||
public void setUserGrade(Integer userGrade) { |
|||
this.userGrade = userGrade; |
|||
} |
|||
|
|||
public Integer getUserIdentity() { |
|||
return userIdentity; |
|||
} |
|||
|
|||
public void setUserIdentity(Integer userIdentity) { |
|||
this.userIdentity = userIdentity; |
|||
} |
|||
|
|||
public Integer getIsAgency() { |
|||
return isAgency; |
|||
} |
|||
|
|||
public void setIsAgency(Integer isAgency) { |
|||
this.isAgency = isAgency; |
|||
} |
|||
|
|||
public Integer getIsPalce() { |
|||
return isPalce; |
|||
} |
|||
|
|||
public void setIsPalce(Integer isPalce) { |
|||
this.isPalce = isPalce; |
|||
} |
|||
|
|||
public Integer getUserAuthLevel() { |
|||
return userAuthLevel; |
|||
} |
|||
|
|||
public void setUserAuthLevel(Integer userAuthLevel) { |
|||
this.userAuthLevel = userAuthLevel; |
|||
} |
|||
|
|||
public Integer getIsSystem() { |
|||
return isSystem; |
|||
} |
|||
|
|||
public void setIsSystem(Integer isSystem) { |
|||
this.isSystem = isSystem; |
|||
} |
|||
|
|||
public Integer getContractDeal() { |
|||
return contractDeal; |
|||
} |
|||
|
|||
public void setContractDeal(Integer contractDeal) { |
|||
this.contractDeal = contractDeal; |
|||
} |
|||
|
|||
public String getLoginCode() { |
|||
return loginCode; |
|||
} |
|||
|
|||
public void setLoginCode(String loginCode) { |
|||
this.loginCode = loginCode; |
|||
} |
|||
|
|||
public Integer getStatus() { |
|||
return status; |
|||
} |
|||
|
|||
public void setStatus(Integer status) { |
|||
this.status = status; |
|||
} |
|||
|
|||
public Integer getTradeStatus() { |
|||
return tradeStatus; |
|||
} |
|||
|
|||
public void setTradeStatus(Integer tradeStatus) { |
|||
this.tradeStatus = tradeStatus; |
|||
} |
|||
|
|||
public Integer getTradeVerify() { |
|||
return tradeVerify; |
|||
} |
|||
|
|||
public void setTradeVerify(Integer tradeVerify) { |
|||
this.tradeVerify = tradeVerify; |
|||
} |
|||
|
|||
public Integer getContractAnomaly() { |
|||
return contractAnomaly; |
|||
} |
|||
|
|||
public void setContractAnomaly(Integer contractAnomaly) { |
|||
this.contractAnomaly = contractAnomaly; |
|||
} |
|||
|
|||
public String getRegIp() { |
|||
return regIp; |
|||
} |
|||
|
|||
public void setRegIp(String regIp) { |
|||
this.regIp = regIp; |
|||
} |
|||
|
|||
public Date getLastLoginTime() { |
|||
return lastLoginTime; |
|||
} |
|||
|
|||
public void setLastLoginTime(Date lastLoginTime) { |
|||
this.lastLoginTime = lastLoginTime; |
|||
} |
|||
|
|||
public String getLastLoginIp() { |
|||
return lastLoginIp; |
|||
} |
|||
|
|||
public void setLastLoginIp(String lastLoginIp) { |
|||
this.lastLoginIp = lastLoginIp; |
|||
} |
|||
|
|||
public Date getCreatedAt() { |
|||
return createdAt; |
|||
} |
|||
|
|||
public void setCreatedAt(Date createdAt) { |
|||
this.createdAt = createdAt; |
|||
} |
|||
|
|||
public Date getUpdatedAt() { |
|||
return updatedAt; |
|||
} |
|||
|
|||
public void setUpdatedAt(Date updatedAt) { |
|||
this.updatedAt = updatedAt; |
|||
} |
|||
} |
|||
@ -0,0 +1,99 @@ |
|||
package bc.mm.mis.core.utils; |
|||
|
|||
import org.apache.commons.codec.binary.Base64; |
|||
|
|||
import javax.crypto.Cipher; |
|||
import javax.crypto.SecretKeyFactory; |
|||
import javax.crypto.spec.PBEKeySpec; |
|||
import javax.crypto.spec.PBEParameterSpec; |
|||
import java.net.URLEncoder; |
|||
import java.security.Key; |
|||
import java.util.Iterator; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 生成token,包含加密与解密 |
|||
*/ |
|||
public class TokenUtils { |
|||
private static final String secretKey = "chhong_employee"; |
|||
private static final byte[] SALT_ = new byte[]{1, 2, 3, 4, 5, 6, 7, 8}; |
|||
private static PBEKeySpec keySpec; |
|||
private static Key key; |
|||
|
|||
/** |
|||
* 创建token信息 |
|||
* @param list |
|||
* @param stillTime 持续时间,单位s |
|||
* @return |
|||
*/ |
|||
public static String createJWT(List<String> list, long stillTime) { |
|||
try { |
|||
StringBuffer sb = new StringBuffer(); |
|||
Iterator var4 = list.iterator(); |
|||
|
|||
while(var4.hasNext()) { |
|||
String source = (String)var4.next(); |
|||
source = encrypt(Base64.encodeBase64String(source.getBytes())); |
|||
sb.append(URLEncoder.encode(source, "UTF-8")).append("."); |
|||
} |
|||
|
|||
sb.append(URLEncoder.encode(encrypt("" + (System.currentTimeMillis() + stillTime)), "UTF-8")); |
|||
return sb.toString(); |
|||
} catch (Exception var6) { |
|||
var6.printStackTrace(); |
|||
return null; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 加密字符串 |
|||
* @param str |
|||
* @return |
|||
* @throws Exception |
|||
*/ |
|||
public static String encrypt(String str) throws Exception { |
|||
if (keySpec == null) { |
|||
keySpec = new PBEKeySpec(secretKey.toCharArray()); |
|||
} |
|||
|
|||
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWithMD5AndDES"); |
|||
if (key == null) { |
|||
key = factory.generateSecret(keySpec); |
|||
} |
|||
|
|||
byte[] salt = SALT_; |
|||
PBEParameterSpec parameterSpec = new PBEParameterSpec(salt, 100); |
|||
Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES"); |
|||
cipher.init(1, key, parameterSpec); |
|||
byte[] result = cipher.doFinal(str.getBytes()); |
|||
return Base64.encodeBase64String(result); |
|||
} |
|||
|
|||
/** |
|||
* 解密token |
|||
* @param token |
|||
* @return |
|||
*/ |
|||
public static String decrypt(String token) { |
|||
try { |
|||
if (keySpec == null) { |
|||
keySpec = new PBEKeySpec(secretKey.toCharArray()); |
|||
} |
|||
|
|||
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWithMD5AndDES"); |
|||
if (key == null) { |
|||
key = factory.generateSecret(keySpec); |
|||
} |
|||
|
|||
byte[] result = Base64.decodeBase64(token); |
|||
byte[] salt = SALT_; |
|||
PBEParameterSpec parameterSpec = new PBEParameterSpec(salt, 100); |
|||
Cipher cipher = Cipher.getInstance("PBEWithMD5AndDES"); |
|||
cipher.init(2, key, parameterSpec); |
|||
return new String(cipher.doFinal(result)); |
|||
} catch (Exception var6) { |
|||
var6.printStackTrace(); |
|||
return null; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,81 @@ |
|||
package bc.mm.mis.utils; |
|||
|
|||
import com.alibaba.fastjson.JSONObject; |
|||
|
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
|
|||
public class AjaxResult { |
|||
/** |
|||
* 接口返回数据 |
|||
* @param msg |
|||
* @param dataList |
|||
* @return |
|||
*/ |
|||
public static JSONObject success(String msg,List dataList){ |
|||
JSONObject result = new JSONObject(); |
|||
result.put("status",200); |
|||
result.put("msg",msg); |
|||
result.put("data",dataList); |
|||
return result; |
|||
} |
|||
|
|||
public static JSONObject success(String token){ |
|||
JSONObject result= new JSONObject(); |
|||
result.put("code",200); |
|||
result.put("token",token); |
|||
return result; |
|||
} |
|||
|
|||
public static JSONObject success(String msg, Map map){ |
|||
JSONObject result = new JSONObject(); |
|||
result.put("code",200); |
|||
result.put("msg",msg); |
|||
result.put("data",map); |
|||
return result; |
|||
} |
|||
|
|||
/** |
|||
* 异常信息 |
|||
* @param msg |
|||
* @return |
|||
*/ |
|||
public static JSONObject error(String msg){ |
|||
JSONObject result = new JSONObject(); |
|||
result.put("code",500); |
|||
result.put("msg",msg); |
|||
return result; |
|||
} |
|||
|
|||
/** |
|||
* 格式异常返回 |
|||
* @param code |
|||
* @param msg |
|||
* @return |
|||
*/ |
|||
public static JSONObject exception(int code,String msg){ |
|||
Map rmap = new HashMap(); |
|||
rmap.put("message",msg); |
|||
rmap.put("time",System.currentTimeMillis()/1000l); |
|||
|
|||
//
|
|||
JSONObject rjson = new JSONObject(); |
|||
rjson.put("status",code); |
|||
rjson.put("message",msg); |
|||
// rjson.put("data",rmap);
|
|||
|
|||
return rjson; |
|||
} |
|||
|
|||
public static JSONObject error500(String msg){ |
|||
Map rmap = new HashMap(); |
|||
rmap.put("message",msg); |
|||
//
|
|||
JSONObject rjson = new JSONObject(); |
|||
rjson.put("data",rmap); |
|||
rjson.put("status",500); |
|||
return rjson; |
|||
} |
|||
} |
|||
@ -0,0 +1,198 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!-- 日志级别从低到高分为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"> |
|||
|
|||
<!--<include resource="org/springframework/boot/logging/logback/base.xml" />--> |
|||
|
|||
<contextName>logback</contextName> |
|||
<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 --> |
|||
<!--<property name="logging.path" value="${logging.path}" />--> |
|||
<springProperty name="LOG_PATH" source="logging.path" defaultValue="/home/logs" /> |
|||
|
|||
|
|||
<!-- 彩色日志 --> |
|||
<!-- 彩色日志依赖的渲染类 --> |
|||
<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}}"/> |
|||
|
|||
|
|||
<!--输出到控制台--> |
|||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> |
|||
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> |
|||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
|||
<level>info</level> |
|||
</filter> |
|||
<encoder> |
|||
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern> |
|||
<!-- 设置字符集 --> |
|||
<charset>UTF-8</charset> |
|||
</encoder> |
|||
</appender> |
|||
|
|||
|
|||
<!--输出到文件--> |
|||
|
|||
<!-- 时间滚动输出 level为 DEBUG 日志 --> |
|||
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|||
<!-- 正在记录的日志文件的路径及文件名 --> |
|||
<file>${LOG_PATH}/log_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"> |
|||
<!-- 日志归档 --> |
|||
<fileNamePattern>${LOG_PATH}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
|||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
|||
<maxFileSize>100MB</maxFileSize> |
|||
</timeBasedFileNamingAndTriggeringPolicy> |
|||
<!--日志文件保留天数--> |
|||
<maxHistory>15</maxHistory> |
|||
</rollingPolicy> |
|||
<!-- 此日志文件只记录debug级别的 --> |
|||
<filter class="ch.qos.logback.classic.filter.LevelFilter"> |
|||
<level>debug</level> |
|||
<onMatch>ACCEPT</onMatch> |
|||
<onMismatch>DENY</onMismatch> |
|||
</filter> |
|||
</appender> |
|||
|
|||
<!-- 时间滚动输出 level为 INFO 日志 --> |
|||
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|||
<!-- 正在记录的日志文件的路径及文件名 --> |
|||
<file>${LOG_PATH}/bcapi_log_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/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
|||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
|||
<maxFileSize>100MB</maxFileSize> |
|||
</timeBasedFileNamingAndTriggeringPolicy> |
|||
<!--日志文件保留天数--> |
|||
<maxHistory>15</maxHistory> |
|||
</rollingPolicy> |
|||
<!-- 此日志文件只记录info级别的 --> |
|||
<filter class="ch.qos.logback.classic.filter.LevelFilter"> |
|||
<level>info</level> |
|||
<onMatch>ACCEPT</onMatch> |
|||
<onMismatch>DENY</onMismatch> |
|||
</filter> |
|||
</appender> |
|||
|
|||
<!-- 时间滚动输出 level为 WARN 日志 --> |
|||
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|||
<!-- 正在记录的日志文件的路径及文件名 --> |
|||
<file>${LOG_PATH}/bcapi_log_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/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
|||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
|||
<maxFileSize>100MB</maxFileSize> |
|||
</timeBasedFileNamingAndTriggeringPolicy> |
|||
<!--日志文件保留天数--> |
|||
<maxHistory>15</maxHistory> |
|||
</rollingPolicy> |
|||
<!-- 此日志文件只记录warn级别的 --> |
|||
<filter class="ch.qos.logback.classic.filter.LevelFilter"> |
|||
<level>warn</level> |
|||
<onMatch>ACCEPT</onMatch> |
|||
<onMismatch>DENY</onMismatch> |
|||
</filter> |
|||
</appender> |
|||
|
|||
|
|||
<!-- 时间滚动输出 level为 ERROR 日志 --> |
|||
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
|||
<!-- 正在记录的日志文件的路径及文件名 --> |
|||
<file>${LOG_PATH}/bcapi_log_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/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> |
|||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
|||
<maxFileSize>100MB</maxFileSize> |
|||
</timeBasedFileNamingAndTriggeringPolicy> |
|||
<!--日志文件保留天数--> |
|||
<maxHistory>15</maxHistory> |
|||
</rollingPolicy> |
|||
<!-- 此日志文件只记录ERROR级别的 --> |
|||
<filter class="ch.qos.logback.classic.filter.LevelFilter"> |
|||
<level>ERROR</level> |
|||
<onMatch>ACCEPT</onMatch> |
|||
<onMismatch>DENY</onMismatch> |
|||
</filter> |
|||
</appender> |
|||
|
|||
<!-- |
|||
<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"/>--> |
|||
<!-- |
|||
使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作: |
|||
第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息 |
|||
第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别: |
|||
--> |
|||
|
|||
|
|||
<!-- |
|||
root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性 |
|||
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, |
|||
不能设置为INHERITED或者同义词NULL。默认是DEBUG |
|||
可以包含零个或多个元素,标识这个appender将会添加到这个logger。 |
|||
--> |
|||
|
|||
<!--开发环境:打印控制台--> |
|||
<springProfile name="dev"> |
|||
<logger name="com.nmys.view" level="debug"/> |
|||
</springProfile> |
|||
|
|||
<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" /> |
|||
</root> |
|||
|
|||
<!--生产环境:输出到文件--> |
|||
<!--<springProfile name="pro">--> |
|||
<!--<root level="info">--> |
|||
<!--<appender-ref ref="CONSOLE" />--> |
|||
<!--<appender-ref ref="DEBUG_FILE" />--> |
|||
<!--<appender-ref ref="INFO_FILE" />--> |
|||
<!--<appender-ref ref="ERROR_FILE" />--> |
|||
<!--<appender-ref ref="WARN_FILE" />--> |
|||
<!--</root>--> |
|||
<!--</springProfile>--> |
|||
|
|||
</configuration> |
|||
Loading…
Reference in new issue