본문 바로가기
프로그래밍/iOS

[iPhone] 로깅 프레임웍 cocoalumberjack

by 백룡화검 2012. 2. 7.

아이폰에서 사용할 수 있는 Log4j 같은 로깅 프레임웍을 찾아 구글링을 하다,

cocoalumberjack 이라는 프레임웍을 찾게 되었다. 사용법도 log4j 와 유사하면서,

설정하기 쉽고, NSLog 보다 빠른속도와 커스텀 로거를 작성할 수 있는 유연성도 제공한다.

실제로 사용해보고, 유용성에 대해서는 추후 포스팅 해야겠다.

아래 주소에서 프레임웍 소스를 다운받자. (svn 으로 체크아웃하자)

http://code.google.com/p/cocoalumberjack/


Lumberjack( 이름이 머 이래 -_-;;) 의 사용법은 다음과 같다

1 소스를 아이폰 프로젝트에 복사한다 (logging이라는 폴더를 만들고, lumberjack 폴더를 통째로 복사했다)

2 프레임웍 사용을 위한 설정을 한다. 사용할 로거의 종류를 결정하는 부분으로 초기화하는 부분에 들어간다

( 예를 들면 applicationDidFinishingLaunching...)

DDLog : 프레임웍의 기초가 되는 부분

DDASLogger : 로그메시지를 Apple System 로거인 Console.app 으로 출력한다

DDTTYLogger : 로그메시지를 Xcode 터미널로 출력한다.

DDFileLogger : 로그메시지를 파일로 출력한다.

다음과 같이 사용할 로거의 인스턴스를 생성하여 DDLog에 추가한다

#import "DDLog.h"
#import "DDTTYLogger.h"
#import "DDASLLogger.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [DDLog addLogger:[DDASLLogger sharedInstance]];
    [DDLog addLogger:[DDTTYLogger sharedInstance]];
    // ...
}

3 기존 NSLog 문을 프레임웍에서 제공하는 로깅 메서드로 대체한다.

로깅 레벨은 error < warn < info < verbose 가 지원된다. 해당 로깅레벨은 설정하면, 자신과 하위레벨의

로깅메시지만을 출력한다. 레벨별 로깅 메서드는 다음과 같다.

DDLogError(@"");
DDLogWarn(@"");
DDLogInfo(@"");
DDLogVerbose(@"");

로깅 레벨은 전역으로 설정 할 수도 있으며, 파일별로 설정할 수도 있다. 로깅 레벨은 상수로 정의되어 진다.

LOG_LEVEL_ERROR : 에러레벨의 로깅메시지 출력
LOG_LEVEL_WARN : 에러, 경고레벨의 로깅메시지 출력
LOG_LEVEL_INFO : 에러, 경고, 인포 레벨의 로깅메시지 출력
LOG_LEVEL_VERBOSE : 모든 로깅메시지 출력
LOG_LEVEL_OFF : 모든 로깅메시지를 출력하지 않음

이제 파일의 상단에 헤더파일과 로깅 레벨을 선언하고, 로깅메서드를 사용한다

#import "DDLog.h"
// 모든 로깅메시지 출력하도록 레벨 설정
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
// 에러 레벨 로깅메시지 출력
DDLogError(@"fail!!");
커스텀 로거를 작성하는 방법 또는 파일로거를 작성하는 방법은 프로젝트 사이트를 참고하자~