반응형

1. 시험환경

- 스프링 STS

 

2. 목적

- 스프링 프로젝트에 log4jdbc-log4j2-jdbc4.1 라이브러리를 설치한다.

- 스프링에서 DB 처리 작업 시, DB 로그를 확인할 수 있게 적용한다.

 

3. 적용

① pom.xml에서 의존성 라이브러리 설치

<!-- mybatis log4jdbc-log4j2 라이브러리 -->
<dependency>
       <groupId>org.bgee.log4jdbc-log4j2</groupId>
       <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
       <version>1.16</version>
</dependency>

 

② src/main/resources/log4jdbc.log4j2.properties 파일생성 및 내용 추가

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

 

src/main/resources/logback.xml 파일 생성 및 내용 추가

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
       <include resource="org/springframework/boot/logging/logback/base.xml"/>

       <!-- log4jdbc-log4j2 -->
       <logger name="jdbc.sqlonly" level="INFO"/>
       <logger name="jdbc.sqltiming" level="INFO"/>
       <logger name="jdbc.audit" level="WARN"/>
       <logger name="jdbc.resultset" level="INFO"/>
       <logger name="jdbc.resultsettable" level="INFO"/>
       <logger name="jdbc.connection" level="INFO"/>
</configuration>

 

④ src/main/resources/log4j.xml 파일에 내용 추가

<!-- SQL Logger -->
<logger name="jdbc.sqltiming" additivity="false">
       <level value="warn" />
       <appender-ref ref="console"/>
</logger>

<logger name="jdbc.sqlonly" additivity="false">
       <level value="info"/>
       <appender-ref ref="console"/>
</logger>

<logger name="jdbc.audit" additivity="false">
       <level value="warn"/>
       <appender-ref ref="console"/>
</logger>

<logger name="jdbc.resultset" additivity="false">
       <level value="warn" />
       <appender-ref ref="console"/>
</logger>

<logger name="jdbc.resultsettable" additivity="false">
       <level value="info"/>
       <appender-ref ref="console"/>
</logger>

 

ⓢ DB 연동 부분에 log4jdbc를 추가한다. (보통, root-context.xml 파일에서 설정)

<!-- MySQL 연결 설정 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
        <property name="url" value="jdbc:log4jdbc:mysql://localhost:3306/mvcmysql?characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value="1q2w3e"/>
    </bean>

 

4. 결과

   - 스프링에서 DB 작업시, DB 로그를 확인할 수 있다.

DB 로그 확인

 

 

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다.

반응형
반응형

1. 시험환경

- 스프링 STS

 

2. 목적

- log4j.xml 파일 경고 문구 디버깅

  The file cannot be validated as the XML definition.

  Create the DTD file or configure an XML catalog for this DTD.

 

3. 적용

① Spring MVC 프로젝트만 생성하였는데, log4j.xml에서 빨간줄 경고가 발생하였다.

log4j.xml 파일 내 경고 표시

 

4. 결과

   - 해결방법은 간단하다. DOCTYPE 태그를 아래와 같이 대체하였다.

     <!DOCTYPE log4j:configuration SYSTEM

     "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

DOCTYPE 태그 변경 후

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다.

반응형
반응형

1. 시험환경

- 스프링 STS

 

2. 목적

- web.xml 파일 에러 디버깅

- cvc-id.3: A field of identity constraint 'web-app-servlet-name-uniqueness' matched element 'web-
 app', but this element does not have a simple type.

 

3. 적용

① Spring MVC 프로젝트만 생성하였는데, web.xml에서 빨간줄 에러가 발생하였다.

web.xml 에러

4. 결과

   - 해결방법은 간단하다.

   - web-app 태그에서 java를 대문자로 변경한다.

JAVA 대문자 변경

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다.

반응형
반응형

1. 시험환경

- JDK 17

 

2. 목적

- 업무에서 가끔 쓰이는 문자열 처리 함수를 기록한다.

 

3. 적용

① trim() : "문자열" 앞/뒤 공백을 제거한다.

    - "문자열".trim()

 

② split() : "구분자"로 문자열을 분리하고, 분리된 문자 조각을 list에 넣어서 반환한다.

    -" 문자열".split("구분자")

 

 equals() : "문자열"과 "비교 대상 문자열"의 내용이 같으면 true를 반환한다.

    - "문자열".equals("비교 대상 문자열")

 

 startWith() : "문자열" 첫부분이 "시작 문자"와 일치하면 true를 반환한다.

    - "문자열".startWith("시작 문자")

 

 endWith() : "문자열" 끝부분이 "종료 문자"와 일치하면 true를 반환한다.

    - "문자열".endWidth("종료 문자")

 

 contains() : "문자열" 중에 "포함 문자"가 존재하면 true를 반환한다.

    - "문자열".contains("포함 문자")

 

⑦ Integer.parseInt() : "숫자 형태 문자열"을 정수형으로 변환하여 반환한다.

    - Integer.parseInt("숫자 형태 문자열")

반응형
반응형

1. 시험환경

- Visual C++ 2017

 

2. 목적

- 서로 다른 프로세스 간 데이터 통신이 필요하다.

- 데이터 통신을 하기 위해 메모리 공유 방식을 사용한다.

 

3. 적용

① 프로세스 1 : 서버

MemoryMappedFileProc1.cpp
0.00MB

 

- MYSTRUCT 구조체를 이용하여 다음과 같은 형식의 데이터를 공유한다. 

공유 데이터 구조

- mapping file을 생성하고, 공유 데이터에 전달할 값을 입력한다.

공유 메모리 생성, 메모리 매핑 파일 생성, 공유 데이터 입력 코드

 

② 프로세스 2 : 클라이언트

MemoryMappedFileProc2.cpp
0.00MB
공유 메모리 생성, 메모리 매핑 파일 생성, 공유 데이터 확인 코드

 

4. 결과

- 프로세스 간 데이터 공유 성공

수신 프로세스에서 공유 데이터 값 확인

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다.

반응형

+ Recent posts