Index: /trunk/include/cf_log.h
===================================================================
--- /trunk/include/cf_log.h	(revision 97)
+++ /trunk/include/cf_log.h	(revision 98)
@@ -28,4 +28,11 @@
 #define CF_LOG_BUFFER_NO				0
 
+/**
+ * 로그 레벨 사용 안함
+ *
+ * @see CF_Log_SetLevel
+ */
+#define CF_LOG_NO_LEVEL					-1
+
 #ifdef __cplusplus
 extern "C" {
@@ -47,8 +54,4 @@
 
 CF_EXPORT int
-CF_Log_SetMT			(const int		mapid,
-						 const CF_BOOL	flag);
-
-CF_EXPORT int
 CF_Log_Write			(const int	mapid,
 						 const char	* prefix,
@@ -58,4 +61,11 @@
 CF_Log_Flush			(const int mapid);
 
+CF_EXPORT int
+CF_Log_SetMT			(const int		mapid,
+						 const CF_BOOL	flag);
+
+CF_EXPORT int
+CF_Log_SetLevel			(const int level);
+
 #ifdef __cplusplus
 }
Index: /trunk/src/cf_log.c
===================================================================
--- /trunk/src/cf_log.c	(revision 97)
+++ /trunk/src/cf_log.c	(revision 98)
@@ -88,4 +88,5 @@
 	CF_Log_Ctx	* ctxPool;
 	int			ctxSize;
+	int			level;
 } S_CF_LOG_ARRAY, CF_LOG_ARRAY;
 
@@ -448,5 +449,5 @@
  * @param ctx	로그 컨텍스트
  *
- * @remark 반드시 먼저 초기화 해야하며, 초기화 시에 주어진 번호보다 작은 아이디 넘버를 사용해야 함
+ * @remark 반드시 먼저 초기화 해야하며, 초기화 시에 주어진 번호보다 작은 아이디 넘버를 사용
  *
  * @see CF_LOG_OPEN, CF_Log_CreateCtx
@@ -531,4 +532,5 @@
 			return CF_ERROR_LOG_INITIALIZE;
 		gLogArray.ctxSize = logPool;
+		gLogArray.level = CF_LOG_NO_LEVEL;
 	}
 
@@ -564,5 +566,5 @@
  * @return 성공 시, CF_OK; 실패 시, 오류 코드
  *
- * @param mapid 로그의 아이디 넘버
+ * @param mapid		로그의 아이디 넘버
  * @param path		로그 파일 경로
  * @param memsize	로그 버퍼 크기
@@ -603,4 +605,87 @@
 
 /**
+ * 로그 버퍼의 데이터를 즉시 로그 파일에 쓰기
+ *
+ * @return 성공 시, CF_OK; 실패 시, 오류 코드
+ *
+ * @param mapid 로그의 아이디 넘버
+ */
+int
+CF_Log_Flush (const int mapid)
+{
+	int			result = 0;
+	CF_Log_Ctx	ctx = NULL;
+
+	result = CF_Log_GetMappedCtx (mapid, &ctx);
+	if (result < 0)
+		return result;
+
+	result = CF_Log_FlushCtx (ctx);
+
+	return result;
+}
+
+/**
+ * 로그 컨텍스트에 멀티쓰레드 모드 설정
+ *
+ * @return 성공 시, CF_OK; 실패 시, 오류 코드 
+ *
+ * @param mapid	로그의 아이디 넘버
+ * @param flag	설정/해제 bool 플래그
+ *
+ * @see CF_BOOL
+ */
+int
+CF_Log_SetMT (const int		mapid,
+			  const CF_BOOL	flag)
+{
+	int			result = 0;
+	CF_Log_Ctx	ctx = NULL;
+
+	result = CF_Log_GetMappedCtx (mapid, &ctx);
+	if (result < 0)
+		return result;
+
+	result = (flag) ? CF_Log_SetMultiThread (ctx) :
+					  CF_Log_UnsetMultiThread (ctx);
+
+	return result;
+}
+
+/**
+ * 현재 설정된 로그 레벨을 가져옴
+ *
+ * @return 성공 시, CF_OK; 실패 시, 오류 코드 
+ *
+ * @param mapid	로그의 아이디 넘버
+ * @param flag	설정/해제 bool 플래그
+ */
+static int
+CF_Log_GetLevel (void)
+{
+	return (gLogArray.level == CF_LOG_NO_LEVEL) ? gLogArray.ctxSize
+												: gLogArray.level;
+}
+
+/**
+ * 로그 레벨을 설정
+ * 지정된 로그 레벨 이하의 아이디 넘버만 로그로 기록하도록 설정
+ *
+ * @return 성공 시, CF_OK; 실패 시, 오류 코드 
+ *
+ * @param mapid	로그의 아이디 넘버
+ * @param flag	설정/해제 bool 플래그
+ *
+ * @see CF_LOG_NO_LEVEL
+ */
+int
+CF_Log_SetLevel (const int level)
+{
+	gLogArray.level = level;
+
+	return CF_OK;
+}
+
+/**
  * 로그 쓰기
  *
@@ -621,4 +706,8 @@
 	va_list		valist;
 
+	result = CF_Log_GetLevel ();
+	if (result < mapid)
+		return CF_OK;
+
 	result = CF_Log_GetMappedCtx (mapid, &ctx);
 	if (result < 0)
@@ -631,53 +720,2 @@
 	return result;
 }
-
-/**
- * 로그 버퍼의 데이터를 즉시 로그 파일에 쓰기
- *
- * @return 성공 시, CF_OK; 실패 시, 오류 코드
- *
- * @param mapid 로그의 아이디 넘버
- */
-int
-CF_Log_Flush (const int mapid)
-{
-	int			result = 0;
-	CF_Log_Ctx	ctx = NULL;
-
-	result = CF_Log_GetMappedCtx (mapid, &ctx);
-	if (result < 0)
-		return result;
-
-	result = CF_Log_FlushCtx (ctx);
-
-	return result;
-}
-
-/**
- * 로그 컨텍스트에 멀티쓰레드 모드 설정
- *
- * @return 성공 시, CF_OK; 실패 시, 오류 코드 
- *
- * @param mapid	로그의 아이디 넘버
- * @param flag	설정/해제 bool 플래그
- *
- * @see CF_BOOL
- */
-int
-CF_Log_SetMT (const int		mapid,
-			  const CF_BOOL	flag)
-{
-	int			result = 0;
-	CF_Log_Ctx	ctx = NULL;
-
-	result = CF_Log_GetMappedCtx (mapid, &ctx);
-	if (result < 0)
-		return result;
-
-	if (flag)
-		result = CF_Log_SetMultiThread (ctx);
-	else
-		result = CF_Log_UnsetMultiThread (ctx);
-
-	return result;
-}
Index: /trunk/test/log.c
===================================================================
--- /trunk/test/log.c	(revision 97)
+++ /trunk/test/log.c	(revision 98)
@@ -26,4 +26,7 @@
 	}
 
+	if (CF_Log_SetLevel (5) < 0)
+		fprintf (stderr, "failed to set log level\n");
+
 	for (i = 0 ; i < 10 ; i++)
 	{
Index: /trunk/test/test.c
===================================================================
--- /trunk/test/test.c	(revision 97)
+++ /trunk/test/test.c	(revision 98)
@@ -119,4 +119,7 @@
 	}
 
+	if (CF_Log_SetLevel (5) < 0)
+		fprintf (stderr, "failed to set log level\n");
+
 	for (i = 0 ; i < 10 ; i++)
 	{
