SpringBoot 통합 log4j 로그 와 HashMap 의 기본 원리 분석
8148 단어 SpringBootlog4j로그HashMap
1.springboot 통합 log4j 로그 기록
1.resources 디 렉 터 리 아래 에 로그 파일 을 만 들 고 가 져 오기:
코드 는 다음 과 같 습 니 다(예시).
#log4j.rootLogger=CONSOLE,info,error,DEBUG
log4j.rootLogger=info,error,CONSOLE,DEBUG
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = info
log4j.appender.info.append=true
#log4j.appender.info.File=/home/admin/pms-api-services/logs/info/api_services_info
log4j.appender.info.File=/Users/dddd/Documents/testspace/pms-api-services/logs/info/api_services_info
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = error
log4j.appender.error.append=true
#log4j.appender.error.File=/home/admin/pms-api-services/logs/error/api_services_error
log4j.appender.error.File=/Users/dddd/Documents/testspace/pms-api-services/logs/error/api_services_error
log4j.logger.DEBUG=DEBUG
log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
log4j.appender.DEBUG.Threshold = DEBUG
log4j.appender.DEBUG.append=true
#log4j.appender.DEBUG.File=/home/admin/pms-api-services/logs/debug/api_services_debug
log4j.appender.DEBUG.File=/Users/dddd/Documents/testspace/pms-api-services/logs/debug/api_services_debug
log4j\u4EE3\u7801
private static final Logger logger = LoggerFactory.getLogger(IndexController.class);
2.log4j 의존 도입코드 는 다음 과 같 습 니 다(예시).
<!-- springboot-log4j -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
3.컨트롤 러 층 테스트코드 는 다음 과 같 습 니 다(예시).
@RestController
public class LoggController {
private static final Logger logger = LoggerFactory.getLogger(LoggController.class);
@RequestMapping("/printLog")
public String printLog(){
logger.info(" ......");
return "Hello World.....";
}
}
2.웹 요청 로 그 를 Aop 으로 일괄 처리1.가 져 오기 의존
코드 는 다음 과 같 습 니 다(예시).
<!--Aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.Aop 처리 로그 의 클래스
@Aspect
@Component
public class WebLogAspect {
private static final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);
@Pointcut("execution(public * com.oracle.order.controller.*.*(..))")
public void webLog() {
}
@Before("webLog()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
// ,
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
//
logger.info("URL : " + request.getRequestURL().toString());
logger.info("HTTP_METHOD : " + request.getMethod());
logger.info("IP : " + request.getRemoteAddr());
Enumeration<String> enu = request.getParameterNames();
while (enu.hasMoreElements()) {
String name = (String) enu.nextElement();
logger.info("name:{},value:{}", name, request.getParameter(name));
}
}
@AfterReturning(returning = "ret", pointcut = "webLog()")
public void doAfterReturning(Object ret) throws Throwable {
// ,
logger.info("RESPONSE : " + ret);
}
}
3.제어 류
@RequestMapping("/getMember")
public String getMember(String name,Integer age){
return "success";
}
요청 경로:http://localhost:8080/getMember?name=sunny&age=123.lombok 플러그 인의 사용
1.가 져 오기 의존
코드 는 다음 과 같 습 니 다(예시).
<!--lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2.lombok 플러그 인 다운로드다운로드 동작 은 다음 과 같 습 니 다(예시).
1. idea
2. idea file
3. settings, plugins
4. lombox, install
3.lombok 플러그 인의 주석 사용다운로드 동작 은 다음 과 같 습 니 다(예시).
@Slf4j // log
@Data // Get Set toString
public class Emp {
String username;
String password;
public static void main(String[] args) {
Emp emp = new Emp();
emp.setUsername("sunny");
emp.setPassword("123");
log.info(emp.toString());
}
}
4.Springboot 정적 자원 에 대한 매 핑 규칙1."/*"현재 항목 의 모든 자원 에 접근 하고(정적 자원 의 폴 더)맵 을 찾 습 니 다.
"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"
"/": html
:http://localhost:8080/test04.html
2.테스트 효과:다음 과 같은 경로 접근 을 실현 하려 면:
http://localhost:8081/springboot/static/test04.html
2.HashMap 바 텀 원리 총화
1.hashmap 의 바 텀 데이터 구조 1.8 이전 과 1.8 의 차이 점 은?
:1.8 ( + ),1.8 ( + + )
table : entry, load
table ,1.8 map ,1.8
2.hashmap 요소 저장 과정먼저 hash 값 을 판단 하고 통 에 요소 가 있 는 지,없 으 면 추가 하 는 지,hash 값 이 같은 지 판단 하 는 지,다 르 면 통 노드 에 체인 표를 직접 구분 합 니 다.
링크 의 길이 가 8 보다 크 고 8 보다 크 면 빨간색 과 검은색 나무 로 바 뀌 는 지 판단 합 니 다.hash 가 같 으 면 key 내용 이 같은 지 판단 하고 같 으 면 덮어 쓰 고 링크 뒤에 추가 합 니 다.
추가 시 빨간색 과 검은색 나무 노드 보다 크 고 직접 추가 보다 크 지 않 으 며 직접 전환 보다 크다 고 판단 합 니 다.
3.hashMap 로드 인자 왜 0.75
로 딩 인자 가 너무 작 아서 요소 가 분산 되 고 공간 이 낭비 되 며 로 딩 인자 가 너무 커서 분포 가 복잡 하고 링크 의 길이 가 길 어 지면 서 번 거 로 움 을 겪 습 니 다.
4.hashmap 길이 가 왜 2 의 n 제곱 인지
2 의 n 제곱 이 아니라면 색인 이 같 기 쉽 고 hash 충돌 이 발생 하기 쉬 우 며 나머지 배열 공간 에 데 이 터 를 저장 하지 않 았 습 니 다.
링크 와 검 은 나무 가 너무 길 어서 효율 이 떨어진다.
5.왜 붉 은 검 은 나무 로 바 뀌 었 을 까?
1.파 송 분포,8 확률 이 너무 적다.붉 은 검 은 나 무 를 조심해 라.
2.메모리 일반 노드 의 두 배,노드 가 충분 할 때 빨간색 과 검은색 나 무 를 사용 하 는 것 이 비교적 수지 가 맞는다.
6.hashmap 의 구조 함 수 는 어떤 것 입 니까?
HashMap 은 4 개의 구조 함 수 를 제공 합 니 다.
1.HashMap():기본 초기 용량(16)과 기본 로드 인자(0.75)를 가 진 빈 HashMap 을 구성 합 니 다.
2.HashMap(int initial Capacity):지정 한 초기 용량 과 기본 로드 인자(0.75)가 있 는 빈 HashMap 을 구성 합 니 다.
3.HashMap(int initialCapacity,float loadFactor):초기 용량 과 로드 인 자 를 지정 한 빈 HashMap 을 구성 합 니 다.
4.HashMap(Mapm):새로운 맵 을 만 들 기 위해 맵 을 입력 하고 기본 로드 인자(0.75)를 사용 합 니 다.
SpringBoot 통합 log4j 로그 와 HashMap 의 기본 원리 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 통합 log4j 로그 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.