[Logback] JsonLayout, PatternLayout

ITWeb/개발일반 2022. 3. 16. 15:52
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
      <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
        <timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSS'Z'</timestampFormat>
        <timestampFormatTimezoneId>Asia/Seoul</timestampFormatTimezoneId>
        <appendLineSeparator>true</appendLineSeparator>
        <jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
          <prettyPrint>true</prettyPrint>
        </jsonFormatter>
      </layout>
    </encoder>
  </appender>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
    </layout>
  </appender>
  
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/file.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>logs/file-%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>

    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
      <layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
        <timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSS'Z'</timestampFormat>
        <timestampFormatTimezoneId>Asia/Seoul</timestampFormatTimezoneId>
        <appendLineSeparator>true</appendLineSeparator>
        <jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
          <prettyPrint>true</prettyPrint>
        </jsonFormatter>
      </layout>
    </encoder>
  </appender>
  
  ...중략...
  
  </configuration>

필요한 부분에 대해서만 기록해 봅니다. 

appender !!

 

:

[Java] Read Properties File.

ITWeb/개발일반 2022. 3. 16. 15:19

일반 Java Application 프로젝트에서 resources 폴더 아래 application.properties 같은 정보를 가져와야 할 때가 있습니다.

아래 처럼 사용 하시면 됩니다.

 

application.properties)

host=localhost
port=8888

 

MainApplication.java)

public void readProperties() {
    Properties prop = new Properties();
    
    try ( InputStream stream = MainApplication.class.getClassLoader().getResourceAsStream("application"
    +".properties")) {
    	prop.load(Stream);
    } catch (Exception e) {
    }
    
    try {
    	Resource resource = new ClassPathResource("application.properties");
        prop.load(resource.getInputStream());
    } catch (Exception e) {
    }
    
    System.out.println( prop.getProperty("host") );
    System.out.println( prop.getProperty("port") );
}

 

:

[Gradle] build.gradle 에서 maven insecure protocol 설정

ITWeb/개발일반 2022. 3. 15. 12:39

maven. uri 설정 시 https 가 아닌 http 를 사용 할 경우 gradle 7.x 에서는 아래 설정을 추가해 주면 됩니다.

 

repositories {
	mavenCentral()
    
    maven {
    	url = uri("http://nexus.xxxxx.com/repository/snapshots")
        allowInsecureProtocol = true
    }
    
    maven {
    	url = uri("http://nexus.xxxxx.com/repository/public")
        allowInsecureProtocol = true
    }
}

 

:

[Shell] Bash String Replacement.

ITWeb/개발일반 2022. 3. 14. 12:14

docker-compose.yml 내 .env 를 이용한 활용이 안되는 경우 아래 처럼 그냥 string replacement 를 통해서 처리 할 수도 있습니다.

bash 에서  array, loop, replacement 에 대한 예제로 작성해 둡니다.

 

SERVICE_NAME='{{SERVICE_NAME}}=escs'
VERSION='{{VERSION}}=8.0.0'
CONTAINER_NAME='{{CONTAINER_NAME}}=escs-c'

DOCKER_VAR=( $SERVICE_NAME $VERSION $CONTAINER_NAME )

for var in "${DOCKER_VAR[@]}"; do
    kvs=($(echo $var | tr "=" "\n"))
    # linux
    sed -i "s/${kvs[0]}/${kvs[1]}/g" docker-compose.yml
    # osx
    sed -i '' "s/${kvs[0]}/${kvs[1]}/g" docker-compose.yml
done

 

:

[Python] pip upgrade.

ITWeb/개발일반 2022. 3. 14. 12:06

 

pip install 하다 보면 pip upgrade 를 하라는 메시지를 접할 때가 있습니다.

제공 하는 메시지는 'pip install --upgrade pip' 인데 이대로 실행 했을 경우 잘 안될 때는 아래와 같이 user 옵션을 주고 실행해 보시면 됩니다.

 

$ pip install --user --upgrade pip

 

: