source: libcf/trunk/include/cf_log.h@ 26

Last change on this file since 26 was 26, checked in by cheese, 11 years ago

#1 documentation with doxygen

File size: 5.1 KB
Line 
1/**
2 * @file cf_log.h
3 * @author myusgun <myusgun@gmail.com>
4 * @version 0.1
5 */
6#ifndef __CF_LOG_H__
7#define __CF_LOG_H__
8
9#include "cf_base.h"
10
11#define CF_ERROR_LOG_INITIALIZE CF_ERROR_LOG - 1
12#define CF_ERROR_LOG_INVALID_CTX CF_ERROR_LOG - 2
13#define CF_ERROR_LOG_SET_MULTITHREAD CF_ERROR_LOG - 3
14#define CF_ERROR_LOG_UNSET_MULTITHREAD CF_ERROR_LOG - 4
15#define CF_ERROR_LOG_LOCK_CTX CF_ERROR_LOG - 5
16#define CF_ERROR_LOG_UNLOCK_CTX CF_ERROR_LOG - 6
17#define CF_ERROR_LOG_FLUSH CF_ERROR_LOG - 7
18#define CF_ERROR_LOG_INVALID_MAPID CF_ERROR_LOG - 8
19#define CF_ERROR_LOG_NOT_MAPPED_ID CF_ERROR_LOG - 9
20#define CF_ERROR_LOG_ALREADY_MAPPED_ID CF_ERROR_LOG - 10
21#define CF_ERROR_LOG_NOT_INITIALIZE CF_ERROR_LOG - 11
22
23/**
24 * 로그의 버퍼 크기를 기본 값으로 설정
25 *
26 * @see CF_Log_CreateCtx, CF_LOG_OPEN
27 */
28#define CF_LOG_BUFFER_DEFAULT -1
29
30/** 로그 기록 시 버퍼를 사용하지 않고 즉시 기록
31 *
32 * @see CF_Log_CreateCtx, CF_LOG_OPEN, CF_Log_Initialize
33 */
34#define CF_LOG_BUFFER_NO 0
35
36/**
37 * 로그에 아이디 넘버를 부여하여 생성 <br />
38 * 로그 기록 시, 아이디 넘버를 사용하면 해당 로그로 기록할 수 있음
39 *
40 * @param __id 부여할 아이디 넘버
41 * @param __file 로그 파일 경로
42 * @param __memsize 로그 버퍼 크기
43 *
44 * @see CF_Log_MapCtxID
45 */
46#define CF_LOG_OPEN(__id,__file,__memsize) \
47 CF_Log_MapCtxID (__id, CF_Log_CreateCtx (__file, __memsize))
48
49/**
50 * 아이디 넘버에 해당하는 로그에 쓰기
51 *
52 * @param __id 로그의 아이디 넘버
53 * @param __pf 로그의 프리픽스 문자열
54 * @param __fmt 포맷 스트링
55 * @param ... 가변 인자
56 *
57 * @see CF_Log_GetMappedCtx
58 */
59#define CF_LOG_WRITE(__id,__pf,__fmt,...) \
60 CF_Log_Write (CF_Log_GetMappedCtx (__id),__pf,__fmt,##__VA_ARGS__)
61
62/**
63 * 아이디 넘버에 해당하는 로그를 닫고 해제
64 *
65 * @param __id 로그의 아이디 넘버
66 *
67 * @see CF_Log_UnmapCtxID
68 */
69#define CF_LOG_CLOSE(__id) CF_Log_UnmapCtxID (__id)
70
71/** 로그 컨텍스트 */
72typedef void * CF_Log_Ctx;
73
74#ifdef __cplusplus
75extern "C" {
76#endif
77
78/**
79 * 로그를 사용하기 위해 초기화
80 *
81 * @return 성공 시, CF_OK; 실패 시, 오류 코드
82 *
83 * @param logPool 아이디 넘버 최대 값
84 */
85CF_EXPORT int
86CF_Log_Initialize (const int logPool);
87
88/**
89 * 로그가 모두 사용된 후 자원 해제
90 *
91 * @return CF_OK 반환
92 */
93CF_EXPORT int
94CF_Log_Finalize (void);
95
96/**
97 * 로그 컨텍스트 생성
98 *
99 * @return 성공 시, 로그 컨텍스트; 실패 시, NULL
100 *
101 * @param path 로그 파일 경로
102 * @param memsize 로그 버퍼 크기
103 *
104 * @see CF_LOG_BUFFER_DEFAULT, CF_LOG_BUFFER_NO
105 */
106CF_EXPORT CF_Log_Ctx
107CF_Log_CreateCtx (const char * path,
108 const int memsize);
109
110/**
111 * 로그 컨텍스트 해제
112 *
113 * @return 성공 시, CF_OK; 실패 시, 오류 코드
114 *
115 * @param ctx 로그 컨텍스트
116 */
117CF_EXPORT int
118CF_Log_DestroyCtx (CF_Log_Ctx ctx);
119
120/**
121 * 로그 컨텍스트에 멀티쓰레드 모드 설정
122 *
123 * @return 성공 시, CF_OK; 실패 시, 오류 코드
124 *
125 * @param ctx 로그 컨텍스트
126 */
127CF_EXPORT int
128CF_Log_SetMultiThread (CF_Log_Ctx ctx);
129
130/**
131 * 로그 컨텍스트에 멀티쓰레드 모드 설정 해제
132 *
133 * @return 성공 시, CF_OK; 실패 시, 오류 코드
134 *
135 * @param ctx 로그 컨텍스트
136 */
137CF_EXPORT int
138CF_Log_UnsetMultiThread (CF_Log_Ctx ctx);
139
140/**
141 * 로그 컨텍스트에 따라 로그 쓰기
142 *
143 * @return 성공 시, CF_OK; 실패 시, 오류 코드
144 *
145 * @param ctx 로그 컨텍스트
146 * @param prefix 로그의 프리픽스 문자열
147 * @param fmt 포맷 스트링
148 * @param ... 가변 인자
149 */
150CF_EXPORT int
151CF_Log_Write (CF_Log_Ctx ctx,
152 const char * prefix,
153 const char * fmt, ...);
154
155/**
156 * 로그 버퍼의 데이터를 즉시 로그 파일에 쓰기
157 *
158 * @return 성공 시, CF_OK; 실패 시, 오류 코드
159 *
160 * @param ctx 로그 컨텍스트
161 */
162CF_EXPORT int
163CF_Log_Flush (CF_Log_Ctx ctx);
164
165/**
166 * 로그 컨텍스트에 아이디 넘버 할당<br />
167 * 로그 기록 시, 아이디 넘버를 사용하면 해당 로그로 기록할 수 있음
168 *
169 * @return 성공 시, CF_OK; 실패 시, 오류 코드
170 *
171 * @param mapid 부여할 아이디 넘버
172 * @param ctx 로그 컨텍스트
173 *
174 * @remark 반드시 먼저 초기화 해야하며, 초기화 시에 주어진 번호보다 작은 아이디 넘버를 사용해야 함
175 *
176 * @see CF_LOG_OPEN, CF_Log_CreateCtx
177 */
178CF_EXPORT int
179CF_Log_MapCtxID (const int mapid,
180 const CF_Log_Ctx ctx);
181
182/**
183 * 아이디 넘버에 해당하는 로그를 닫고 해당하는 컨텍스트를 해제
184 *
185 * @return 성공 시, CF_OK; 실패 시, 오류 코드
186 *
187 * @param mapid 로그의 아이디 넘버
188 *
189 * @remark 아이디 넘버에 해당하는 컨텍스트가 해제되므로 주의
190 *
191 * @see CF_LOG_CLOSE, CF_Log_DestroyCtx
192 */
193CF_EXPORT int
194CF_Log_UnmapCtxID (const int mapid);
195
196/**
197 * 아이디 넘버에 해당하는 로그 컨텍스트를 얻기
198 *
199 * @return 성공 시, 로그 컨텍스트; 실패 시, NULL
200 *
201 * @param mapid 로그의 아이디 넘버
202 */
203CF_EXPORT CF_Log_Ctx
204CF_Log_GetMappedCtx (const int mapid);
205
206#ifdef __cplusplus
207}
208#endif
209
210#endif // #ifndef __CF_LOG_H__
Note: See TracBrowser for help on using the repository browser.