filebeat에서, log 파일을 긁어갈 때 multiline을 설정하는 것이 있습니다. 이번 시간에는 이 중에서 간단하게 pattern만 잘 설정해 보도록 하겠습니다. Filebeat에서 logstash로 보내지 않고, 바로 ElasticSearch로 보냅니다. 로그가 어떻게 elasticsearch에 적재되는지, kibana로 보도록 하겠습니다. log.file.path로 불러 오는군요. 저기서, /home/cho/jo_test/logs는 사실, log가 발생하는 프로그램이, 로그를 저장하는 위치입니다. 해당 프로그램의 logback-spring.xml 파일의 일부입니다. LOG_DIR이 logs 밑으로 잡혀있고, 저는 이 디렉토리 밑에 로그들을 모두 떨굴 겁니다. 제 서버에서는 이 위치에 떨굴 겁..
전체 글 검색 결과
List를 immutable 하게 변경시켜야 할 일이 있어서, UnmodifiableCollection을 쓰게 되었는데요. 이 친구들에 대해서 간단하게 알아보도록 하겠습니다. 아래와 같은 listBuilder 클래스가 있습니다. list에 무언가를 넣고, 8번째 줄에서 Collections.unmodifiableList를 호출합니다. 이 때 어떤 일이 일어날까요? Collection class의 1289번째 줄에 접근합니다. 저는 ArrayList를 넣었으니, RandomAccessList 생성자를 호출할 겁니다. 1397번째 줄에서 부모 생성자를 호출합니다. 1304번째 줄에서 또 부모 생성자를 호출합니다. 여기서 주목할 만한 것은 1301번째 줄의 list는 제가 넣었던 ArrayList의 참조 값이..
오늘은 String에서, Object의 valueOf는 어떤 식으로 동작하는지 알아보겠습니다. lombok을 쓰시다 보면, ToString 어노테이션을 잘못 쓰다가 stackoverflow 에러가 났다는 글을 보실 수 있습니다.이는 왜 그런 것일까요? 어떤 메서드 때문에 사이클이 문제가 된 것일까요? 결론부터 말하면 toString이 모든 필드에 대한 정보를 출력하게 만들었습니다. 그리고, 이들에 대한 정보를 출력하기 위해 호출하는 valueOf 메서드 때문입니다. 그래서, 이 메서드에 대해서 작성을 하였습니다. 문제 상황을 재현해 보면 아래와 같습니다. A.java입니다. A 안에는 필드 b가 들어 있습니다. A 객체 a를 하나 생성했다고 해 보겠습니다. 생성자가 호출이 되면, b에는 새로 생성한 B ..
상속과 구성은 많이 들어봤을 법한 주제입니다. A is a B일 때 상속을 쓰라고 합니다. 예를 들자면, 개와 동물은 그러한 관계의 한 예입니다. 몇 레퍼런스를 더 찾아보던 중에, 이 질문글을 보게 되었습니다. 그리고 좋은 답변글들을 보면서, 정사각형과 직사각형, 그리고 타원과 원도 A is a B의 관계에 있다는 것을 알게 되었습니다. 그리고 이 문제와 리스코프 원칙과 관련이 있다는 것도 알게 되었습니다. 아래 예제를 보겠습니다. 정사각형은 직사각형을 상속합니다. square 생성자는 부모 rect의 생성자를 호출하는데, 넘기는 변수는 h, h입니다. 높이와 너비가 같기 때문입니다. rect 클래스입니다. 여기에는 getArea 메서드만 있습니다. 이 프로그램의 출력 결과는 25입니다. 그런데, 사실 ..
카톡방에서 이야기를 하다가, 파이선은 '각'을 유니코드 포인트를 나타내는 정수로 쉽게 변환할 수 있단 걸 알게 되었습니다. 그것을 토대로 규칙을 찾아서 분리한다. 괜찮은 방법입니다. 일단 문자를 문자 번호로 변환하는 것부터 해야 겠는데요. 이럴 때 쓸 수 있는 것은 ord 함수입니다. ord 함수는 유니코드 문자가 하나 주어지면, 그것을 코드 포인트로 바꾸는 함수입니다. 다음을 수행해 보겠습니다. Cpython 3.x대에서 수행하였습니다. 44032가 나옵니다. '가'의 유니코드 포인트는 AC00입니다. 그리고 결과값으로 나온 44032를 2진수로 변환해서 HEX 값으로 보면 AC00임을 알 수 있습니다. 그러면, '각'과 '값' 등은 어떤 값으로 할당이 되어 있을까요? 이 문서를 보시면, 사전순으로 코..
최근댓글