Spring Boot 의 통합 로그 솔 루 션
4701 단어 Java
먼저 resources 디 렉 터 리 에 logback - spring. xml 을 logback 설정 파일 로 새로 만 듭 니 다.
${CONSOLE_LOG_PATTERN}
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
${LOG_HOME}/vcash-order.log
${LOG_HOME}/vcash-order.%d{yyyy-MM-dd}.log
60
%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n
보 실 수 있 습 니 다. LOG 를 통 해HOME 이 property 는 로그 저장 경 로 를 지정 하여 springProfile 을 통 해 개발, 테스트, 생산 환경 에 대응 하 는 3 가지 서로 다른 환경 을 지정 하 였 으 며, 이 안에 로그 단 계 를 지정 하 였 으 며, 위 에서 정의 한 두 개의 appender 를 참조 하 였 습 니 다.
새 주석 @ Log:
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {
}
새 aspect 클래스 를 만 듭 니 다. 이 클래스 에서 로그 기록 을 처리 합 니 다:
@Aspect
@Component
public class VBSAspect {
private static final Logger log= LoggerFactory.getLogger(VBSAspect.class);
@Pointcut("@annotation(com.vcash.wechat.annotation.Log)")
public void logPointcut(){}
@Around("logPointcut()")
public Object logHandler(ProceedingJoinPoint process) throws Throwable{
long startTime=System.currentTimeMillis();
MethodSignature methodSignature= (MethodSignature) process.getSignature();
Method method=methodSignature.getMethod();
String methodName=method.getName();
String className= method.getDeclaringClass().getName();
Object[] args=process.getArgs();
StringBuilder params=new StringBuilder();
for (int i = 0; i < args.length; i++) {
params.append(args[i].toString());
params.append(";");
}
Object result= null;
try {
result = process.proceed();
} catch (Throwable throwable) {
String exception=throwable.getClass()+":"+throwable.getMessage();
long costTime=System.currentTimeMillis()-startTime;
log.error(" :{}, :{}, :{}, :{}, :{}, :{}",startTime,costTime,className,methodName,params.toString(),exception);
return CustomerResponse.buildFail(throwable.getMessage());
}
long costTime=System.currentTimeMillis()-beginTime;
log.info(" :{}, :{}, :{}, :{}, :{}, :{}",startTime,costTime,className,methodName,params.toString(), result);
return result;
}
}
이 를 통 해 알 수 있 듯 이 @ Pointcut 에 서 는 @ Log 가 존재 하 는 곳 을 주석 으로 지정 하고 @ Log 는 방법 에 주석 을 달 았 기 때문에 logHandler 방법 에서 @ Log 가 주석 을 달 고 있 는 방법 에 대한 일련의 매개 변 수 를 얻 었 습 니 다. 예 를 들 어 방법 명, 입 참, 출 참, 시간 소모 등 이 매개 변 수 를 특정한 형식 으로 로그 에 기록 합 니 다. 물론 입 니 다.너 도 여기에서 로 그 를 데이터베이스 에 쓸 수 있다.
이상, 전체 시스템 의 로그 처 리 를 완 료 했 습 니 다. 484 는 매우 간단 합 니 다. 더 이상 모든 종류 와 방법 에 로그 코드 를 도입 하지 않 아 도 됩 니 다. 코드 를 결합 하여 유지 하기 편 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.