메모. 개인적으로 사용하는 logback file appender 설정

 

  • 서비스를 운영시 파일로 log를 남길때는 아래 사항을 꼭 고려해야함
    • 로그 파일 용량이 너무 커서 vi로 오픈이 힘든걸 막아야함
    • 로그파일을 삭제 없이 계속 저장하면 disk full로 서비스 장애가 발생하니 주의
    • 적당한 보관기간으로 압축해서 롤링

logback.properties 설정

#로그파일 저장 디렉토리(유저/logs 디렉토리 하위에 서비스코드별로 디렉토리 구분)
log.file.dir=/home/svc_user/logs/svc_cd

#로그 파일 명(prefix에 환경코드 추가, 1개 서버에 blue/green 배포하는 경우를 위해서 was port별로 파일명 구분)
log.file.name=real_svc_cd_${server.port}.log

log.file.full=${log.file.dir}/${log.file.name}

#백업
log.file.backup.fileNamePattern=${log.file.dir}/backup/${log.file.name}_%d{yyyy-MM-dd}_%i.zip

#로그 패턴
log.pattern=%d{yyyy-MM-dd HH:mm:ss} [${HOSTNAME}] [%-5level] %logger{35}:%L - %msg%n

 

logback-spring.xml 설정(참고 링크)

 

  • 로그파일 1개는 20M로 유지
  • 최대 50의 로그파일을 유지
  • 최대 1000MB
  • 압축해서 롤링
 <!-- 외부 설정파일을 사용 -->
    <property resource="properties/logback.properties"/>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${log.file.full}</File>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.file.backup.fileNamePattern}</fileNamePattern>
            <maxFileSize>20MB</maxFileSize>
            <maxHistory>50</maxHistory>
            <totalSizeCap>1000MB</totalSizeCap>
        </rollingPolicy>
    </appender>

 

https://dzone.com/articles/top-35-git-commands-with-examples-and-bonus

'개발툴' 카테고리의 다른 글

postman 툴의 HTTP/2 지원과 관련  (0) 2020.04.21
putty세션 색깔 변경  (0) 2020.01.21

MIT라이센스의 JavaScript 이미지 압축 라이브러리

 

https://github.com/fengyuanchen/compressorjs

SW개발자로서 적성에 맞는지? 혹은 괜찮은 개발자인지 판단에 도움이 될만한 내용을 생각날때마다 정리하는 글입니다.

 - 주의: 해당 내용은 업계 선배분들이 얘기한 것도 있지만, 제 주관적인 생각도 있기 때문에 다른 분들과 생각이 다를 수 있습니다.

 

  1. 평생 학습할 수 있어야 합니다.
    1. 기술 발전이 빠른 업종이고, 새로운 기술로 어려운 문제를 쉽게 풀 수 있기 때문입니다.
      1. 처음 HDFS(하둡)를 봤을때 놀랐죠. 그전에는 1대의 머신에서만 어떻게든 문제 해결해야한다는 생각이 강했는데 여러 컴퓨팅파워를 이용해서 big data처리라니.. 어떻게든 오라클 SP 최적화하고 있었는데.. 요즘 elastic search의 클러스터도 그렇고요
  2. 팀플레이를 할 수 있어야합니다.
    1. 요즘에는 혼자 개발해서 서비스하기에는 SW규모가 너무 커졌습니다. 팀으로 서비스를 만들어야하는데 팀플레이가 안되면 곤란하죠.
  3. 끊기 있게 엔지니어링 문제를 열심히 풀 수 있어야합니다.
  1. MIT라이센스(수정, 배포가 자유로움)의 bootstrap admin 템플릿
    1. toy프로젝트 등을 개발할때 사용
    2. https://github.com/ColorlibHQ/AdminLTE
  2. 업무용으로는 돈주고 구매한 inspinia를 보통 사용
    1. Extended 버전이 100불정도였던것 같은데 현재 1400불(엄청 올랐네요. 개인적으로도 하나 구매해두려다가 안했는데 후회가..)
    2. https://wrapbootstrap.com/theme/inspinia-responsive-admin-template-WB0R5L90S

 

참고

 - 이메일을 주 커뮤니케이션 방법으로 사용하는 회사에서 근무시, 새로 입사하는 직원들에게 조언해주는 내용입니다.

 

1. 이메일은 두괄식으로 작성
2. 수신자가 많을시 To(받는사람)를 정확하게 명시
3. 이메일로 요청받은 업무가 시간이 걸린다면, 우선 선 회신을 진행(언제까지 확인 후 추가 회신한다는 형태로)
 - 발송자는 수신자가 업무를 F/U 한다는 내용을 인지시킴
4. 이메일 자동분류, 강조처리 기능 등을 사용해서 중요 이메일을 놓치지 않도록 함
 - 모바일 앱의 알림 설정도 진행
5. 읽지 않은 메일 숫자가 과하게 존재하면 안됨(모든 이메일은 확인 및 처리가 필요, 특히 본인이 수신자인 경우) 

 

기타 참고 : https://pathmaker.tistory.com/182

 

간단한 Testcase로 확인용 작성

	@Test
	void 두글자국가코드_및_국가명_리스트조회() {

		String[] countries = Locale.getISOCountries();
		//Arrays.stream(countries).forEach(System.out::println); //2글자 국가코드 리스트 확인

		for (String country : countries) {

			Locale l = new Locale("en", country);
			System.out.println(String.format("2글자 국가코드(ISO 3166-1 alpha-2): %s | 영문 국가명: %s | 한글 국가명: %s ", country, l.getDisplayCountry(new Locale("en")),
				l.getDisplayCountry(new Locale("ko"))));

		}

		System.out.println("countries 갯수: " + countries.length);

		Assertions.assertNotNull(countries);
		Assertions.assertTrue(countries.length >= 200); //2021년기준 249개국이 존재.(200개 국가 이상을 assert 체크 기준으로 함)
	}

메모

 

대표적인 기업용 블록체인 플랫폼
https://www.hyperledger.org/use/fabric

+ Recent posts