Flume의 기본 로그를 log4j에서 logback으로 변경

flume에 logback로 로그 파일 쓰기 flume에 logback 설치 방법 (http://logback.qos.ch/download.html) 에서 logback 다운로드 한다 . (현재 v1.1.3) 압축을 풀고. logback-classic-1.1.3.jar, logback-core-1.1.3.jar 를 $FLUME_HOME/lib에 복사해 넣는다. 기존 log4j는 ./lib/slf4j-log4j12-1.6.1.jar를 ./lib/slf4j-log4j12-1.6.1.jar.back로 이름을 바꾼다. log4j를 지우는 것은 선택사항이다 (놔두면 둘다 기록 한다) logback.xml 파일을 수정해서 $FLUME_HOME/conf/logback.xml에 넣는다. logback.xml 샘플 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 <?...

October 30, 2015 · 2 min · 페이퍼

logback에서 시간 + 용량 기준으로 로그파일 분할하기

logback을 이용하는 경우 오늘이 지나거나 용량이 100메가를 넘어가면 파일이 분리된다. logback.xml 에 아래 appender 추가 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>DEBUG</level> </filter> <prudent>false</prudent> <file>/logs/debug.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>/logs/old/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100mb</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>[%-5level] %d{HH:mm:ss.SSS} %logger{36} - %msg%n</pattern> </encoder> </appender> <maxFileSize /> 는 분할할 용량이다 (kb, gb도 된다) <maxHistory /> 30일 지난 로그는 오래된 순서대로 지워준다....

October 30, 2015 · 1 min · 페이퍼

Flume 설치 및 테스트 (mac)

Flume 란? 여러대(여러서비스..)에 기록되는 로그파일들을 실시간으로 한곳으로 모아주는 서비스 설치 http://flume.apache.org/download.html 에서 다운로드 한다. 적절한 곳에 압축을 풀어 준다 ~/dev/tool/flume JAVA_HOME이 지정되 있지 않으면. ~/.bash_profile 을 열어 환경 변수를 설정해 준다. 1 export JAVA_HOME = /usr (자바 경로.) 설치 및 테스트는 mac에서 했지만. centos에서도 잘되리라 믿는다. 기본 flume.conf 파일 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 # The configuration file needs to define the sources, # the channels and the sinks....

October 29, 2015 · 3 min · 페이퍼

spring + sitemesh 웹사이트 구축

sitemesh를 설정을 해보겠습니다. pom.xml 1 2 3 4 5 <dependency> <groupId>opensymphony</groupId> <artifactId>sitemesh</artifactId> <version>2.4.2</version> </dependency> WEB-INF/web.xml 에 아래 추가. 1 2 3 4 5 6 7 8 <filter> <filter-name>sitemesh</filter-name> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> WEB-INF/sitemesh.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <?xml version="1.0" encoding="UTF-8"?> <sitemesh> <property name="decorators-file" value="/WEB-INF/decorators.xml" /> <excludes file="${decorators-file}" /> <page-parsers> <parser content-type="text/html" class="com....

October 28, 2015 · 3 min · 페이퍼

spring jpa 저장

jpa에서는 저장시 repository.save 함수를 이용하여 저장합니다 Member class처럼 @OneToMany나 @ManyToOne 필드들을 함께 저장 할 수 있습니다. Member.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 @Entity @Table(name = "tb_member") public class Member { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "member_seq") public Integer memberSeq; @Column public String nickname; @Expose @OneToMany( targetEntity = MemberInter.class , cascade = CascadeType.ALL , fetch = FetchType....

October 21, 2015 · 2 min · 페이퍼

c# 에서 c++(dll)로 LPCTSTR parameter 넘겨 호출 하기

c++ 로 된 dll을 c#에서 호출할때 예제입니다. 먼저 c++ 코드들을 간단히 짰습니다. test.h 1 extern "C" __declspec(dllexport) int test(LPCTSTR szFileName); test.cpp 1 2 3 int test(LPCTSTR szFileName) { return 0; } 다음은 c#쪽 코드들입니다 1 2 3 4 5 6 7 8 9 [DllImport("sampleLib.dll", CallingConvention = CallingConvention.Cdecl)] private static extern int test( [MarshalAs(UnmanagedType.LPWStr)] string szFileName); private void button2_Click(object sender, EventArgs e) { string szFileName = @"c:\filename.txt"; int result = test(ticketName); Debug....

October 15, 2015 · 1 min · 페이퍼

WPF(c#)에서 control을 png로 저장

예전에 했던 대로 System.Drawing 을 써서 하려고 했는데.. wpf에 이런 기능이 있었네.. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 // uiPage.ren public void DoPageToPng(string fileName) { RenderTargetBitmap rtb = new RenderTargetBitmap((int)uiPage.ActualWidth, (int)uiPage.ActualHeight, 96, 96, PixelFormats.Pbgra32); rtb.Render(uiPage); PngBitmapEncoder png2 = new PngBitmapEncoder(); png2.Frames.Add(BitmapFrame.Create(rtb)); using (MemoryStream stream = new MemoryStream()) { png2.Save(stream); using (System.Drawing.Image image = System.Drawing.Image.FromStream(stream)) { image.Save(fileName); } } }

October 15, 2015 · 1 min · 페이퍼

spring jpa의 @NamedQuery, @NamedNativeQuery 연습

jpa에서.. repository를 이용하여 findAll이나.. findOneBy…. 시리즈를 써서 데이타를 조회 할수 있지만 아래와 같이 특정 쿼리를 직접 입력하여 이용도 가능합니다. /classes/META-INF/orm.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 <?xml version="1.0" encoding="UTF-8"?> <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" version="2.0"> <named-query name="Inter.findByAlal2"> <query>select i from Inter i where i.internameko = ?1</query> </named-query> <named-native-query name="Inter.findByAlal" result-class="sample.jpa.Inter"> <query>select a.inter_seq, a.inter_name_ko, a.inter_name_en from tb_inter a where a.inter_name_ko = ?</query> </named-native-query> </entity-mappings> 또는.. 아래와 같이 Entity 클래스에 선언해도 됩니다...

October 8, 2015 · 1 min · 페이퍼

spring jpa 조회 연습

entity 작업에 조회까지.. 테스트 해봤습니다. 테이블의 관계가 아래와 같을때 상황 1 tb_member -< tb_member_inter >- tb_inter 조회 조건 Member를 가져오면.. member의 이미지들과… inter의 목록을 함께 가져오도록 inter의 상세 정보는 tb_inter에 있음 (가져올때 조인해서..) 아래 class들 간략 설명 MemberInter의 PK가 두개이므로. 위와 같이 클래스를 하나 만들어서 @IdClass를 지정해야 함 @Expose 는 Gson관련하여 화면에 뿌릴 필드를 정하는 옵션입니다. jpa와는 무관합니다. MemberInter.class에서 많이 헷갈렸습니다. (@ManyToOne) @JoinColumn을 추가로.. 써야 합니다. optional을 true로 하면 join시 outer join을 합니다....

October 7, 2015 · 2 min · 페이퍼

spring jpa 설정 및 테스트 (maven 설정)

거의 대부분 mybatis 를 이용하여 개발을 하는데.. JPA가 대세라고 해서 가벼운 프로젝트에 연동을 해봤습니다. 1. 라이브러리 import…. maven pom.xml 1 2 3 4 5 6 7 8 9 10 <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.9.0.RELEASE</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.3.8.Final</version> </dependency> 2. Entity class를 만들어 줍니다. 참고로 SerializedName, Expose는 jpa와 직접 관련은 없습니다.. (개체를 그대로 JsonView 할때 사용) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 import com....

October 5, 2015 · 3 min · 페이퍼