Commit 4411e072 authored by Java-刘 彧阳's avatar Java-刘 彧阳

Merge branch 'master' into xyqb-user2-userCenter

Conflicts:
	src/main/java/cn/quantgroup/xyqb/controller/external/user/InnerController.java
parents e8ce2034 04497787
package cn.quantgroup.xyqb.aspect.logcaller;
import cn.quantgroup.xyqb.util.ApplicationContextHolder;
import cn.quantgroup.xyqb.util.IPUtil;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* 调用者记录
* Created by Administrator on 2017/5/15.
*/
@Aspect
@Component
@Order(value = Ordered.HIGHEST_PRECEDENCE)
public class LogCallHttpAspect {
private static final Logger LOGGER = LoggerFactory.getLogger(LogCallHttpAspect.class);
@Pointcut("@annotation(cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller)")
private void logHttpCaller() {
}
@Around("logHttpCaller()")
public Object record(ProceedingJoinPoint pjp) throws Throwable {
Object result = pjp.proceed();
// 异步记录调用日志
try {
ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
HttpServletRequest request = attrs.getRequest();
String remoteIP = IPUtil.getRemoteIP(request);
LogCallHttpAspect logCallHttpAspect = ApplicationContextHolder.getBean(LogCallHttpAspect.class);
logCallHttpAspect.asyncRecordIt(pjp,result,remoteIP);
}catch (Exception e){
}
return result;
}
@Async
public void asyncRecordIt(ProceedingJoinPoint pjp, Object result, String remoteIP){
Object[] args = pjp.getArgs();
String methodName = pjp.getSignature().getName();
String targetName = pjp.getTarget().getClass().getName();
LOGGER.info("http api is called,from IP:[{}],method :[{}],args:[{}],response:[{}]",remoteIP,targetName.concat(".").concat(methodName),args,result);
}
}
package cn.quantgroup.xyqb.aspect.logcaller;
import java.lang.annotation.*;
/**
* Created by Administrator on 2017/5/15.
*/
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogHttpCaller {
}
......@@ -494,7 +494,7 @@ public class MotanUserServiceImpl implements UserMotanService {
xUserSpouse.setSpouseName(userSpouse.getSpouseName());
xUserSpouse.setCreatedAt(userSpouse.getCreatedAt());
xUserSpouse.setUpdateAt(userSpouse.getUpdateAt());
xUserSpouse.setStatus(cn.quantgroup.motan.enums.MaritalStatus.valueOf(userSpouse.getStatus().name()));
xUserSpouse.setStatus(cn.quantgroup.user.enums.MaritalStatus.valueOf(userSpouse.getStatus().name()));
return xUserSpouse;
}
......@@ -528,10 +528,10 @@ public class MotanUserServiceImpl implements UserMotanService {
if (xUserSpouse.getUserId() == null || xUserSpouse.getUserId() == 0) {
return returnErrorValue("用户不能为空");
}
cn.quantgroup.motan.enums.MaritalStatus status = xUserSpouse.getStatus();
cn.quantgroup.user.enums.MaritalStatus status = xUserSpouse.getStatus();
String spousePhone = xUserSpouse.getSpousePhone();
String spouseName = xUserSpouse.getSpouseName();
if (xUserSpouse.getStatus() == cn.quantgroup.motan.enums.MaritalStatus.MARRIED) {
if (xUserSpouse.getStatus() == cn.quantgroup.user.enums.MaritalStatus.MARRIED) {
if (!ValidationUtil.validatePhoneNo(spousePhone)) {
return returnErrorValue("手机号格式错误");
}
......@@ -545,8 +545,8 @@ public class MotanUserServiceImpl implements UserMotanService {
userSpouse = new UserSpouse(xUserSpouse.getUserId());
userSpouse.setCreatedAt(timestamp);
}
userSpouse.setSpouseName(status == cn.quantgroup.motan.enums.MaritalStatus.MARRIED ? spouseName : "");
userSpouse.setSpousePhone(status == cn.quantgroup.motan.enums.MaritalStatus.MARRIED ? spousePhone : "");
userSpouse.setSpouseName(status == cn.quantgroup.user.enums.MaritalStatus.MARRIED ? spouseName : "");
userSpouse.setSpousePhone(status == cn.quantgroup.user.enums.MaritalStatus.MARRIED ? spousePhone : "");
userSpouse.setStatus(MaritalStatus.valueOf(status.name()));
userSpouse.setUpdateAt(timestamp);
userSpouse = userSpouseService.save(userSpouse);
......
......@@ -4,14 +4,48 @@ import cn.quantgroup.xyqb.aspect.accessable.IpValidator;
import cn.quantgroup.xyqb.entity.*;
import cn.quantgroup.xyqb.entity.enumerate.*;
import cn.quantgroup.xyqb.model.*;
import cn.quantgroup.xyqb.aspect.logcaller.LogHttpCaller;
import cn.quantgroup.xyqb.controller.IBaseController;
import cn.quantgroup.xyqb.entity.Address;
import cn.quantgroup.xyqb.entity.Contact;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail;
import cn.quantgroup.xyqb.entity.UserExtInfo;
import cn.quantgroup.xyqb.entity.UserSpouse;
import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.entity.enumerate.EducationEnum;
import cn.quantgroup.xyqb.entity.enumerate.IncomeEnum;
import cn.quantgroup.xyqb.entity.enumerate.IncomeRangeEnum;
import cn.quantgroup.xyqb.entity.enumerate.MaritalStatus;
import cn.quantgroup.xyqb.entity.enumerate.OccupationEnum;
import cn.quantgroup.xyqb.entity.enumerate.Relation;
import cn.quantgroup.xyqb.model.AddressRet;
import cn.quantgroup.xyqb.model.ContactRet;
import cn.quantgroup.xyqb.model.IdType;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.UserDetailRet;
import cn.quantgroup.xyqb.model.UserExtInfoRet;
import cn.quantgroup.xyqb.model.UserRet;
import cn.quantgroup.xyqb.model.UserSpouseRet;
import cn.quantgroup.xyqb.service.auth.IIdCardService;
import cn.quantgroup.xyqb.service.session.ISessionService;
import cn.quantgroup.xyqb.service.user.*;
import cn.quantgroup.xyqb.service.user.IAddressService;
import cn.quantgroup.xyqb.service.user.IContactService;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.IUserExtInfoService;
import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.service.user.IUserSpouseService;
import cn.quantgroup.xyqb.service.user.vo.UserDetailVO;
import cn.quantgroup.xyqb.service.wechat.IWechatService;
import cn.quantgroup.xyqb.util.ValidationUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -31,7 +65,7 @@ import java.util.List;
*/
@RestController
@RequestMapping("/innerapi")
public class InnerController {
public class InnerController implements IBaseController {
private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(InnerController.class);
......@@ -55,6 +89,7 @@ public class InnerController {
private ISessionService sessionService;
@RequestMapping("/user/search/phoneNo")
@LogHttpCaller
public JsonResult findByPhoneNo(String phoneNo) {
User user = userService.findByPhoneInDb(phoneNo);
if (user == null) {
......@@ -65,6 +100,7 @@ public class InnerController {
}
@RequestMapping("/user/search/uuid")
@LogHttpCaller
public JsonResult findByUuid(String uuid) {
User user = userService.findByUuidInDb(uuid);
if (user == null) {
......@@ -74,6 +110,23 @@ public class InnerController {
return JsonResult.buildSuccessResult("", userRet);
}
@RequestMapping("/user/getPhoneByUserIds")
@LogHttpCaller
public JsonResult findByIds(@RequestParam(value = "userIds") String userIdsString) {
LOGGER.info("批量查询用户的手机号列表, userIdsString:" + userIdsString);
if (StringUtils.isEmpty(userIdsString)) {
return JsonResult.buildErrorStateResult(null, null);
}
List<Long> userIds = JSONObject.parseObject(userIdsString, new TypeReference<List<Long>>() {
});
if(!CollectionUtils.isEmpty(userIds) && userIds.size()<=500) {
Map<Long, String> userIdAndPhoneMap = userService.findPhoneByIdsInDb(userIds);
return JsonResult.buildSuccessResult("", userIdAndPhoneMap);
}else {
return JsonResult.buildErrorStateResult("批量查询每次最多进行500条用户信息的查询",null);
}
}
@RequestMapping("/user/save")
public JsonResult saveUser(
String phoneNo, Long registeredFrom, Long createdAt, Long updatedAt,
......@@ -176,6 +229,7 @@ public class InnerController {
* @return
*/
@RequestMapping("/user_detail/search/userId")
@LogHttpCaller
public JsonResult findUserDetailByUserId(Long userId) {
UserDetail userDetail = userDetailService.findByUserId(userId);
if (userDetail != null) {
......@@ -185,6 +239,7 @@ public class InnerController {
}
@RequestMapping("/user/search/userId")
@LogHttpCaller
public JsonResult findUserByUserId(Long userId) {
User user = userService.findById(userId);
if (user != null) {
......@@ -194,6 +249,7 @@ public class InnerController {
}
@RequestMapping("/user_detail/search/phone")
@LogHttpCaller
public JsonResult findUserDetailByPhone(String phoneNo) {
UserDetail userDetail = userDetailService.findByPhoneNo(phoneNo);
if (userDetail != null) {
......@@ -212,6 +268,7 @@ public class InnerController {
}
@RequestMapping("/contact/search/user_id")
@LogHttpCaller
public JsonResult findContactsByUserId(Long userId) {
if (null == userId) {
return JsonResult.buildErrorStateResult(null, null);
......@@ -342,7 +399,10 @@ public class InnerController {
}
@RequestMapping("/user_detail/search_list")
@LogHttpCaller
public JsonResult searchUserDetailList(String name, String phoneNo, String idNo) {
LOGGER.info("searchUserDetailList ,param.name:{},phone:{},idNo:{},ip:{}",name,phoneNo,idNo,getIp());
if (StringUtils.isBlank(name) && StringUtils.isBlank(phoneNo) && StringUtils.isBlank(idNo)) {
return JsonResult.buildErrorStateResult("至少必须满足一个条件不为空", null);
}
......@@ -363,6 +423,7 @@ public class InnerController {
}
@RequestMapping("/user/query/openId")
@LogHttpCaller
public JsonResult queryOpenIdByUserId(Long userId) {
if (userId == null) {
return JsonResult.buildErrorStateResult("userId不能为空", null);
......@@ -375,6 +436,7 @@ public class InnerController {
}
@RequestMapping("/user/wechat/phone_no")
@LogHttpCaller
public JsonResult queryOpenIdByPhoneNo(String phoneNo) {
if (StringUtils.isBlank(phoneNo)) {
return JsonResult.buildErrorStateResult("手机号错误", null);
......@@ -433,6 +495,7 @@ public class InnerController {
}
@RequestMapping("/user/spouse/findByUserId")
@LogHttpCaller
public JsonResult querySpouse(Long userId) {
if (userId == null || userId == 0) {
return JsonResult.buildErrorStateResult("用户不能为空", null);
......@@ -445,6 +508,28 @@ public class InnerController {
return JsonResult.buildSuccessResult(null, UserSpouseRet.getUserSpouseRet(userSpouse));
}
@RequestMapping("/user/findByPhones")
public JsonResult getUserIdByPhones(@RequestParam("userPhones")String userPhones){
if(StringUtils.isBlank(userPhones)){
return JsonResult.buildErrorStateResult("传入用户手机号不可为空",null);
}
List<String> phones = JSONObject.parseObject(userPhones, new TypeReference<List<String>>() {});
if(org.apache.commons.collections.CollectionUtils.isNotEmpty(phones)) {
if(!(phones.size()>500)) {
List<User> users = userService.findByPhones(phones);
if(org.apache.commons.collections.CollectionUtils.isNotEmpty(users)) {
return JsonResult.buildSuccessResult(null, users.stream().collect(Collectors.toMap(User::getPhoneNo,User::getId)));
}else {
return JsonResult.buildSuccessResult(null, null);
}
}
return JsonResult.buildErrorStateResult("单次批量查询不可超过500个手机号",null);
}
return JsonResult.buildErrorStateResult("传入用户手机号不可为空",null);
}
/**
* 重置密码接口,供内部人员使用(例如绝影)
* @param key
......
......@@ -436,6 +436,7 @@ public class UserController implements IBaseController {
User user = getCurrentUser();
Long userId = user.getId();
WechatUserInfo userInfo = wechatService.findWechatUserInfoFromDb(openId);
LOGGER.info("微信关联openId,user:[{}],openId:[{}],wechatUserInfo:[{}]",user,openId,userInfo);
// 已经绑定过了
if (userInfo != null && StringUtils.isNotEmpty(userInfo.getPhoneNo())) {
......
......@@ -75,10 +75,10 @@ public class UserDetail implements Serializable {
xUserDetail.setName(this.getName());
xUserDetail.setIdNo(this.getIdNo());
if (this.getIdType() != null) {
xUserDetail.setIdType(cn.quantgroup.motan.enums.IdType.valueOf(this.getIdType().name()));
xUserDetail.setIdType(cn.quantgroup.user.enums.IdType.valueOf(this.getIdType().name()));
}
if (this.getGender() != null) {
xUserDetail.setGender(cn.quantgroup.motan.enums.Gender.valueOf(this.getGender().name()));
xUserDetail.setGender(cn.quantgroup.user.enums.Gender.valueOf(this.getGender().name()));
}
xUserDetail.setEmail(this.getEmail());
xUserDetail.setQq(this.getQq());
......
......@@ -4,14 +4,18 @@ import cn.quantgroup.xyqb.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
/**
* Created by Miraculous on 15/7/4.
*/
public interface IUserRepository extends JpaRepository<User, Long> ,JpaSpecificationExecutor<User>{
public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> {
User findByPhoneNo(String phoneNo);
User findByUuid(String uuid);
List<User> findByIdIn(List<Long> ids);
User findById(Long id);
}
......@@ -2,6 +2,9 @@ package cn.quantgroup.xyqb.service.user;
import cn.quantgroup.xyqb.entity.User;
import java.util.List;
import java.util.Map;
/**
* Created by Miraculous on 15/7/5.
*/
......@@ -23,8 +26,11 @@ public interface IUserService {
User findByUuidInDb(String uuid);
Map<Long, String> findPhoneByIdsInDb(List<Long> userIds);
User saveUser(User user);
User findById(Long userId);
List<User> findByPhones(List<String> phones);
}
......@@ -7,6 +7,14 @@ import cn.quantgroup.xyqb.repository.IUserRepository;
import cn.quantgroup.xyqb.service.user.IUserDetailService;
import cn.quantgroup.xyqb.service.user.vo.UserDetailVO;
import com.google.common.collect.Maps;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
......@@ -14,15 +22,6 @@ import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Created by 11 on 2016/12/29.
*/
......
......@@ -7,21 +7,29 @@ import cn.quantgroup.xyqb.service.sms.ISmsService;
import cn.quantgroup.xyqb.service.user.ILkbUserService;
import cn.quantgroup.xyqb.service.user.IUserService;
import cn.quantgroup.xyqb.util.PasswordUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.persistence.criteria.Predicate;
import javax.transaction.Transactional;
import java.sql.Timestamp;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* Created by Miraculous on 15/7/5.
*/
@Service
@Slf4j
public class UserServiceImpl implements IUserService {
@Autowired
......@@ -41,6 +49,31 @@ public class UserServiceImpl implements IUserService {
return userRepository.findByPhoneNo(phone);
}
@Override
public Map<Long, String> findPhoneByIdsInDb(List<Long> userIds) {
if (CollectionUtils.isEmpty(userIds)) {
return Maps.newHashMap();
}
Map<Long, String> userIdAndPhoneMap = Maps.newHashMap();
int pageSize = 1000;
int idSize = userIds.size();
for (int i = 0; i < idSize; i += pageSize) {
List<Long> subList = userIds.subList(i, Math.min(idSize, i + pageSize));
List<User> users = userRepository.findByIdIn(subList);
users.stream().forEach(user -> {
userIdAndPhoneMap.put(user.getId(), user.getPhoneNo());
});
if (i + pageSize < idSize) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
log.error("线程sleep失败", e);
}
}
}
return userIdAndPhoneMap;
}
@Override
public User findByUuidInDb(String uuid) {
return userRepository.findByUuid(uuid);
......@@ -57,6 +90,14 @@ public class UserServiceImpl implements IUserService {
return userRepository.findById(userId);
}
@Override
public List<User> findByPhones(List<String> phones) {
return userRepository.findAll((root, query, cb) -> {
query.where(root.get("phoneNo").as(String.class).in(phones));
return query.getRestriction();
});
}
@Override
public User registerAndReturn(String phoneNo, String password, Long registerFrom) {
......
......@@ -68,10 +68,10 @@ public class UserDetailVO {
xUserDetail.setName(this.getName());
xUserDetail.setIdNo(this.getIdNo());
if (this.getIdType() != null) {
xUserDetail.setIdType(cn.quantgroup.motan.enums.IdType.valueOf(this.getIdType().name()));
xUserDetail.setIdType(cn.quantgroup.user.enums.IdType.valueOf(this.getIdType().name()));
}
if (this.getGender() != null) {
xUserDetail.setGender(cn.quantgroup.motan.enums.Gender.valueOf(this.getGender().name()));
xUserDetail.setGender(cn.quantgroup.user.enums.Gender.valueOf(this.getGender().name()));
}
xUserDetail.setEmail(this.getEmail());
xUserDetail.setQq(this.getQq());
......
package cn.quantgroup.xyqb.util;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author mengfan.feng
*/
public class Utils {
private static Pattern pattern = Pattern.compile("(?<!\\d)(?:(?:1[34578]\\d{9})|(?:861[34578]\\d{9}))(?!\\d)");
public static String safeMap2Str(Map<String, String> info) {
if (null == info) {
return null;
......@@ -26,4 +32,22 @@ public class Utils {
return builder.toString();
}
public static String coverPhone(String str){
if(str.length()<=0)
return "";
if(str.length()>1024) //长度超过1024的字符串不走正则匹配过滤手机号
return "";
Matcher matcher = pattern.matcher(str);
Map<String,String> replaceMap = new HashMap<>();
while (matcher.find()) {
String group = matcher.group();
String replace = group.substring(0,3).concat("****").concat(group.substring(7)).concat(" [".concat(PasswordUtil.MD5(group)).concat("]"));
replaceMap.put(group,replace);
}
Set<Map.Entry<String, String>> entries = replaceMap.entrySet();
for (Map.Entry<String, String> entry :entries){
str = str.replaceAll(entry.getKey(),entry.getValue());
}
return str;
}
}
package cn.quantgroup.xyqb.util.log;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.IThrowableProxy;
import ch.qos.logback.classic.spi.LoggerContextVO;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.quantgroup.xyqb.util.PasswordUtil;
import cn.quantgroup.xyqb.util.Utils;
import org.apache.commons.codec.digest.Md5Crypt;
import org.slf4j.Marker;
/**
* Created by ocean on 2017/5/4.
*/
public class WithOutPhoneLoggingEvent implements ILoggingEvent {
private ILoggingEvent event;
transient String withOutPhoneFormattedMessage;
public WithOutPhoneLoggingEvent(ILoggingEvent event){
this.event = event;
}
@Override public String getThreadName() {
return this.event.getThreadName();
}
@Override public Level getLevel() {
return this.event.getLevel();
}
@Override public String getMessage() {
return this.event.getMessage();
}
@Override public Object[] getArgumentArray() {
return this.event.getArgumentArray();
}
@Override public String getFormattedMessage() {
if (withOutPhoneFormattedMessage != null) {
return withOutPhoneFormattedMessage;
}
// 用正则找到手机号,并打上掩码,替换进去
withOutPhoneFormattedMessage = Utils.coverPhone(event.getFormattedMessage());
return withOutPhoneFormattedMessage;
}
@Override public String getLoggerName() {
return this.event.getLoggerName();
}
@Override public LoggerContextVO getLoggerContextVO() {
return this.event.getLoggerContextVO();
}
@Override public IThrowableProxy getThrowableProxy() {
return this.event.getThrowableProxy();
}
@Override public StackTraceElement[] getCallerData() {
return this.event.getCallerData();
}
@Override public boolean hasCallerData() {
return this.event.hasCallerData();
}
@Override public Marker getMarker() {
return this.event.getMarker();
}
@Override public Map<String, String> getMDCPropertyMap() {
return this.event.getMDCPropertyMap();
}
@Override public Map<String, String> getMdc() {
return this.event.getMdc();
}
@Override public long getTimeStamp() {
return this.event.getTimeStamp();
}
@Override public void prepareForDeferredProcessing() {
this.getFormattedMessage();
this.getThreadName();
// fixes http://jira.qos.ch/browse/LBCLASSIC-104
this.getMDCPropertyMap();
}
}
package cn.quantgroup.xyqb.util.log;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.rolling.RollingFileAppender;
/**
* Created by ocean on 2017/5/4.
*/
public class WithOutPhoneRollingFileAppender<E> extends RollingFileAppender<E> {
@Override
public void doAppend(E eventObject) {
if(eventObject instanceof ILoggingEvent){
eventObject = (E)new WithOutPhoneLoggingEvent((ILoggingEvent)eventObject);
}
super.doAppend(eventObject);
}
}
server.port=8080
server.port=8082
security.sessions=if_required
spring.aop.proxy-target-class=true
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<appender name="STDOUT" class="cn.quantgroup.xyqb.util.log.WithOutPhoneRollingFileAppender">
<file>/home/quant_group/logs/xyqb_user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/quant_group/logs/xyqb_user.log.%d{yyyy-MM-dd}</fileNamePattern>
<append>true</append>
<maxHistory>30</maxHistory>
</rollingPolicy>
<!--
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{ISO8601} [%-5level] %logger{36} - %msg%n</pattern>
<pattern>%d{ISO8601} [%thread] [%-5level] %logger{36} - %msg%n</pattern>
</layout>
</appender>
......
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<appender name="FILE" class="cn.quantgroup.xyqb.util.log.WithOutPhoneRollingFileAppender">
<file>/home/quant_group/logs/xyqb_user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/home/quant_group/logs/xyqb_user.log.%d{yyyy-MM-dd}</fileNamePattern>
......@@ -8,7 +9,7 @@
<maxHistory>30</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{ISO8601} [%-5level] %logger{36} - %msg%n</pattern>
<pattern>%d{ISO8601} [%thread] [%-5level] %logger{36} - %msg%n</pattern>
</layout>
</appender>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment