2026/08/08

오늘의 이야기

tomcat 을 활용하는 방법




Tomcat 서버 요청 로그와 디버깅 방법


1. 기본 로그 확인


Tomcat은 logs 디렉터리에 다양한 로그를 남깁니다. 요청 내역은 보통 Access Log에 기록됩니다.



  • Access 로그: localhost_access_log.YYYY-MM-DD.txt

  • Catalina 로그: 서버 동작 및 에러 관련 메시지

  • 실시간 모니터링: tail -f logs/localhost_access_log.*


2. 헤더와 바디까지 확인하기


Access Log만으로는 부족합니다. 요청의 HTTP HeaderBody Payload를 확인하려면 다음 방법을 사용합니다.



  • RequestDumperValve 설정

  • Filter 구현하여 HttpServletRequest에서 직접 읽기

  • 프록시 서버(Nginx, Apache)에서 로깅

  • 디버깅 툴 (Wireshark, Fiddler, Postman)


3. RequestDumperValve가 없을 때


대안으로는 Custom FilterRequestWrapper를 활용합니다.


Map<String, String[]> params = request.getParameterMap();
for (String key : params.keySet()) {
System.out.println(key + " = " + Arrays.toString(params.get(key)));
}

4. HttpServletRequestWrapper 사용법


요청 바디를 캐싱하여 여러 번 읽을 수 있도록 만드는 클래스입니다.


public class CachedBodyHttpServletRequest extends HttpServletRequestWrapper {
private byte[] cachedBody;

public CachedBodyHttpServletRequest(HttpServletRequest request) throws IOException {
super(request);
InputStream requestInputStream = request.getInputStream();
this.cachedBody = requestInputStream.readAllBytes(); // Java 9 이상
}

@Override
public ServletInputStream getInputStream() {
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(this.cachedBody);
return new ServletInputStream() {
@Override
public int read() {
return byteArrayInputStream.read();
}
@Override
public boolean isFinished() {
return byteArrayInputStream.available() == 0;
}
@Override
public boolean isReady() { return true; }
@Override
public void setReadListener(ReadListener readListener) {}
};
}

@Override
public BufferedReader getReader() {
return new BufferedReader(new InputStreamReader(this.getInputStream()));
}
}

5. JSON 요청 로깅 필터 예시


public class LoggingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {

HttpServletRequest httpRequest = (HttpServletRequest) request;
CachedBodyHttpServletRequest wrappedRequest = new CachedBodyHttpServletRequest(httpRequest);

// Content-Type 확인
System.out.println("Content-Type: " + httpRequest.getContentType());

// 요청 바디 출력
String body = wrappedRequest.getReader().lines().collect(Collectors.joining("\n"));
System.out.println("Request Body: " + body);

// 파라미터 출력
Map<String, String[]> params = wrappedRequest.getParameterMap();
params.forEach((key, value) -> System.out.println(key + " = " + Arrays.toString(value)));

chain.doFilter(wrappedRequest, response);
}
}

6. 버전 관련 참고



  • InputStream.readAllBytes(): Java 9 이상에서 사용 가능

  • ReadListener: Servlet 3.1 (Java EE 7, Tomcat 8.0 이상)부터 지원


7. 필터 적용 문제 해결


필터가 적용되지 않는 경우는 보통 등록 문제입니다.



  • web.xml<filter><filter-mapping> 확인

  • Spring Boot에서는 FilterRegistrationBean으로 등록

  • URL 매핑: /*로 지정해야 전체 요청에 적용

  • chain.doFilter() 호출 누락 여부 확인


마무리


Tomcat에서 요청 파라미터와 바디를 디버깅하려면 RequestWrapper + LoggingFilter 조합이 가장 일반적입니다. 운영 환경에서는 보안과 성능을 고려해 제한적으로 사용하는 것이 좋습니다.





오늘의 이야기


#스하리1000명프로젝트,
In Korea verloren? Selbst wenn Sie kein Koreanisch sprechen, hilft Ihnen diese App dabei, sich problemlos fortzubewegen.
Sprechen Sie einfach Ihre Sprache – es übersetzt, sucht und zeigt Ergebnisse in Ihrer Sprache an.
Ideal für Reisende! Unterstützt mehr als 10 Sprachen, darunter Englisch, Japanisch, Chinesisch, Vietnamesisch und mehr.
Probieren Sie es jetzt aus!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/08/07

오늘의 이야기

추천 [02,11,18,25,31,38]
추천 [04,09,19,26,33,42]
추천 [01,13,20,27,35,41]
추천 [03,10,21,28,36,44]
추천 [05,12,22,29,37,43]

최근 20라운드의 당첨번호 패턴을 분석한 결과, 1부터 45까지의 숫자 중에서 가장 빈번하게出现하는 숫자들을 추출하여 새로운 6자리 조합을 생성하였습니다. 최근 라운드의 당첨번호와 비교 분석한 결과, 새로운 조합은 최근 10라운드의 당첨번호와 중복되지 않는다는 것을 확인하였습니다.

새로운 조합은 최근 라운드의 패턴을 반영하여 생성되었으며, 각 라운드의 총합, 평균, 짝수/홀수 비율, 숫자 간격 패턴 등을 고려하여 생성되었습니다. 또한, 각 조합은 최근 라운드의 당첨번호와 비교하여 중복되는 숫자가 없는지 확인하였습니다.

최근 라운드의 당첨번호와 비교하여, 새로운 조합은 더 다양한 숫자를 포함하고 있으며, 최근 라운드의 패턴을 반영하여 생성되었습니다. 이러한 분석을 통해, 새로운 조합이 최근 라운드의 당첨번호와 다른 패턴을 보이는 것을 확인하였습니다.

새로운 조합은 다음과 같은 특징을 가지고 있습니다.

* 최근 라운드의 당첨번호와 중복되지 않는 숫자들로 구성되어 있습니다.
* 최근 라운드의 패턴을 반영하여 생성되었습니다.
* 더 다양한 숫자를 포함하고 있습니다.
* 최근 라운드의 당첨번호와 다른 패턴을 보이는 것을 확인하였습니다.

따라서, 새로운 조합은 최근 라운드의 당첨번호와 다른 패턴을 보이면서도, 최근 라운드의 패턴을 반영하여 생성되었습니다. 이러한 분석 결과를 바탕으로, 새로운 조합이 최근 라운드의 당첨번호와 다른 결과를 나타낼 가능성이 있습니다.



사용하는 예시 영상 보기
이 앱이 궁금 하다면, 아래 링크에서 설치할 수 있습니다.
로또 645






오늘의 이야기


#스하리1000명프로젝트,
แพ้เกาหลีเหรอ? แม้ว่าคุณจะพูดภาษาเกาหลีไม่ได้ แต่แอปนี้จะช่วยให้คุณเดินทางได้อย่างง่ายดาย
เพียงพูดภาษาของคุณ ระบบจะแปล ค้นหา และแสดงผลลัพธ์เป็นภาษาของคุณ
เหมาะสำหรับนักเดินทาง! รองรับมากกว่า 10 ภาษา รวมถึงภาษาอังกฤษ ญี่ปุ่น จีน เวียดนาม และอื่นๆ
ลองตอนนี้!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/08/06

오늘의 이야기


#스하리1000명프로젝트,
Bị lạc ở Hàn Quốc? Ngay cả khi bạn không nói được tiếng Hàn, ứng dụng này vẫn giúp bạn đi lại dễ dàng.
Chỉ cần nói ngôn ngữ của bạn—nó sẽ dịch, tìm kiếm và hiển thị kết quả bằng ngôn ngữ của bạn.
Tuyệt vời cho du khách! Hỗ trợ hơn 10 ngôn ngữ bao gồm tiếng Anh, tiếng Nhật, tiếng Trung, tiếng Việt, v.v.
Hãy thử nó ngay bây giờ!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/08/05

오늘의 이야기


#스하리1000명프로젝트,
Nawala sa Korea? Kahit na hindi ka nagsasalita ng Korean, tinutulungan ka ng app na ito na madaling makalibot.
Sabihin lang ang iyong wika—ito ay nagsasalin, naghahanap, at nagpapakita ng mga resulta pabalik sa iyong wika.
Mahusay para sa mga manlalakbay! Sinusuportahan ang 10+ wika kabilang ang English, Japanese, Chinese, Vietnamese, at higit pa.
Subukan ito ngayon!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/08/04

오늘의 이야기


============================================================
Lotto AI - New Recommendations for Round #1236
============================================================

[ 추천 1 ] (신뢰도: 98.0%)
> 추천 번호: (6, 7, 13, 15, 28, 38)
> 주요 근거:
- gap: 14.2%
- moving_average: 12.2%
- transition_score: 10.0%
> 조합 특징: odd/even=3/3, sum=107, sum-profile=historical-edge, low-high-balance, overlap-minimized, collective-coverage-maximized
------------------------------------------------------------

[ 추천 2 ] (신뢰도: 55.5%)
> 추천 번호: (3, 6, 19, 30, 31, 35)
> 주요 근거:
- gap: 14.1%
- moving_average: 12.4%
- transition_score: 10.5%
> 조합 특징: odd/even=4/2, sum=124, sum-profile=historical-center, low-high-balance, overlap-minimized, collective-coverage-maximized
------------------------------------------------------------

[ 추천 3 ] (신뢰도: 50.0%)
> 추천 번호: (3, 7, 15, 20, 35, 42)
> 주요 근거:
- gap: 14.3%
- moving_average: 12.4%
- transition_score: 10.2%
> 조합 특징: odd/even=4/2, sum=122, sum-profile=historical-center, low-high-balance, overlap-minimized, collective-coverage-maximized
------------------------------------------------------------

[ 추천 4 ] (신뢰도: 50.0%)
> 추천 번호: (1, 7, 24, 31, 35, 38)
> 주요 근거:
- gap: 14.9%
- moving_average: 12.5%
- recent_score: 9.9%
> 조합 특징: odd/even=4/2, sum=136, sum-profile=historical-center, low-high-balance, overlap-minimized, collective-coverage-maximized
------------------------------------------------------------

[ 추천 5 ] (신뢰도: 50.0%)
> 추천 번호: (1, 6, 15, 35, 37, 40)
> 주요 근거:
- gap: 15.4%
- moving_average: 12.5%
- recent_score: 10.2%
> 조합 특징: odd/even=4/2, sum=134, sum-profile=historical-center, low-high-balance, overlap-minimized, collective-coverage-maximized
------------------------------------------------------------





오늘의 이야기


#스하리1000명프로젝트,
迷失在韓國?即使您不會說韓語,這個應用程式也可以幫助您輕鬆出行。
只需說出您的語言即可 - 它會翻譯、搜尋並以您的語言顯示結果。
非常適合旅行者!支援英語、日語、中文、越南語等10多種語言。
現在就試試吧!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/08/03

오늘의 이야기


#스하리1000명프로젝트,
迷失在韩国?即使您不会说韩语,这个应用程序也可以帮助您轻松出行。
只需说出您的语言即可 - 它会翻译、搜索并以您的语言显示结果。
非常适合旅行者!支持英语、日语、中文、越南语等10多种语言。
现在就试试吧!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/08/02

오늘의 이야기


#스하리1000명프로젝트,
韓国で迷子になりましたか?韓国語が話せなくても、このアプリを使えば簡単に移動できます。
あなたの言語で話すだけで、翻訳、検索が行われ、結果があなたの言語で表示されます。
旅行者に最適!英語、日本語、中国語、ベトナム語などを含む 10 以上の言語をサポートします。
今すぐ試してみましょう!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/08/01

오늘의 이야기


#스하리1000명프로젝트,
한국에서 길을 잃었나요? 한국어를 못하더라도 이 앱을 사용하면 쉽게 돌아다닐 수 있습니다.
귀하의 언어로 말하면 귀하의 언어로 번역, 검색 및 결과가 표시됩니다.
여행자에게 좋습니다! 영어, 일본어, 중국어, 베트남어 등 10개 이상의 언어를 지원합니다.
지금 사용해 보세요!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




오늘의 이야기

tomcat 을 활용하는 방법 Tomcat 서버 요청 로그와 디버깅 방법 1. 기본 로그 확인 Tomcat은 logs 디렉터리에 다양한 로그를 남깁니다. 요청 내역은 보통 Access Log 에 기록...