/** * @file NFLog.h * @brief Log Ãâ·Â Ŭ·¡½º * @remarks * @author °­µ¿¸í(edith2580@gmail.com) * @date 2009-04-02 */ #pragma once #include #include #include #include "NFLogManager.h" namespace Nave { /** * @class NFLog * @brief Log Ãâ·Â Ŭ·¡½º * @remarks NFLog::SetLogHandel(hList); // ƯÁ¤ À©µµ¿ì·Î ·Î±×¸¦ Ãâ·ÂÇÑ´Ù. \r\n * NFLog::EnableLogPrint(TRUE); // ·Î±×¸¦ È­¸é¿¡ Ãâ·ÂÇÑ´Ù. \r\n * NFLog::EnableLogOutput(TRUE); // ·Î±×¸¦ ÆÄÀÏ·Î ÀúÀåÇÑ´Ù \r\n * NFLog::SetLogDetail(TRUE); // »ó¼¼ ·Î±×·Î ¼³Á¤ÇÕ´Ï´Ù. \r\n * NFLog::SetLogLimit(NFLog::Proxy::Info) // ·Î±× ¸®¹ÌÅ͸¦ Á¤ÀÇÇÕ´Ï´Ù. \r\n * // ·Î±× »ç¿ë \r\n * LOG_IMPORTANT((L"Test Start")); \r\n * // ·Î±×¸¦ ¸¶¹«¸®ÇÕ´Ï´Ù. \r\n * NFLog::CloseLog(); \r\n * @warning NFLog::CloseLog()¸¦ È£ÃâÇÏÁö ¾ÊÀ»°æ¿ì ÆÄÀÏ·Î ·Î±×°¡ ÀúÀåµÇÁö * ¾Ê½À´Ï´Ù. * * @par * @author Edith * @date 2009-04-04 */ class NFLog { public: /// °¢ ·Î±×ÀÇ Index ŸÀÔ enum Groups { Info = 1 << 0, Warning = 1 << 1, Error = 1 << 2, Exception = 1 << 3, Important = 1 << 4, }; /// ·Î±× Ãâ·Â¿ë ±¸Á¶Ã¼ struct Proxy { /// ·Î±×°¡ È£ÃâµÈ ÇÔ¼ö const WCHAR* func; /// ·Î±×°¡ È£ÃâµÈ ÆÄÀÏ const WCHAR* file; /// ·Î±×°¡ È£ÃâµÈ ¶óÀιøÈ£ int linenum; /// ·Î±×ÀÇ ±×·ì¾ÆÀ̵ð int group; Proxy(int pGroup, const WCHAR* pFile, int pLinenum, const WCHAR* pFunc); void Log(const WCHAR* msg, ...); }; /// Message¸¦ Ãâ·ÂÇÒ À©µµ¿ì ÇÚµéÀ» ¼ÂÆÃÇÑ´Ù. static void SetLogHandel(HWND hListWnd); /// È­¸é¿¡ ·Î°í¸¦ ÂïÀ»²¨³Ä static void SetLogPrint(BOOL enable = TRUE); /// ÆÄÀÏ·Î ·Î±×¸¦ ÂïÀ»²¨³Ä static void SetLogOutput(BOOL enable = TRUE, DWORD dwSize = 100 * 1024 * 1024); /// ·Î±×ÀÇ »ç¿ë ¸®¹ÌÅ͸¦ Á¤ÀÇÇÕ´Ï´Ù. NFLog::Info ~ NFLog::Important static void SetLogLimit(int limit); /// »ó¼¼ ·Î±×¸¦ ³²±é´Ï´Ù. static void SetLogDetail(BOOL detail); /// ·Î±×¸¦ Á¾·áÇÕ´Ï´Ù. (Àӽú¯¼ö¿¡ ÀúÀåµÈ ·Î±×¸¦ ÆÄÀÏ·Î ÀúÀåÇÕ´Ï´Ù.) static void CloseLog(); private: /** * @brief hWnd¿¡ StringÀ» Ãâ·ÂÇÑ´Ù. * @param hWnd À©µµ¿ì ÇÚµé * @param String ¸Þ½ÃÁö * @param Len ¸Þ½ÃÁö±æÀÌ */ static void AddLogMsg( HWND hWnd, WCHAR* String, int Len ); /** * @brief ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. ÄܼÖÀ϶§ printf·Î À©µµ¿ì¸ðµåÀ϶§ MsgÀ©µµ¿ì·Î Ãâ·Â * @param *msg Ãâ·Â ¸Þ½ÃÁö * @param ... ÀÎÀÚ */ static void LogPrintf( WCHAR* msg, ... ); /** * @brief ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. ÄܼÖÀ϶§ printf·Î À©µµ¿ì¸ðµåÀ϶§ MsgÀ©µµ¿ì·Î Ãâ·Â * @param group ±×·ìÀ妽º * @param *msg ¸Þ½ÃÁö */ static void LogPrintf( int group, WCHAR* msg ); /** * @brief ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. ÄܼÖÀ϶§ printf·Î À©µµ¿ì¸ðµåÀ϶§ MsgÀ©µµ¿ì·Î Ãâ·Â * @param group ±×·ìÀ妽º * @param pFile È£ÃâÆÄÀϸí * @param pLinenum È£Ãâ¶óÀÎ * @param pFunc È£ÃâÇÔ¼ö * @param *msg ¸Þ½ÃÁö */ static void LogPrintf( int group, const WCHAR* pFile, int pLinenum, const WCHAR* pFunc, WCHAR* msg ); /// ·Î±× ¹®ÀÚ¿­À» Ãß°¡ÇÕ´Ï´Ù. static void OutputLog(const WCHAR* log); private: /// Message¸¦ Ãâ·ÂÇÒ À©µµ¿ì ÇÚµé static HWND s_hLogHandel; /// ·Î±×Ãâ·ÂÀ» Ȱ¼ºÈ­ ÇÕ´Ï´Ù. static BOOL s_bEnableLogPrint; /// ·Î±×¸¦ ÆÄÀÏ·Î ÀúÀåÇÕ´Ï´Ù. static BOOL s_bSaveLogFile; /// ·Î±× Limit static int s_iLogLimit; /// ·Î±× Detail static BOOL s_bLogDetail; /// ·Î±×¸¦ ÆÄÀÏÀ» °ü¸®ÇÏ´Â ¸Å´ÏÁ® static NFLogManager* s_pLogManager; }; } /// Info Log #define LOG_INFO(LOGMESSAGE) {Nave::NFLog::Proxy(Nave::NFLog::Info, __WFILE__, __LINE__,__WFUNCSIG__).Log LOGMESSAGE;} /// Warning Log #define LOG_WARNING(LOGMESSAGE) {Nave::NFLog::Proxy(Nave::NFLog::Warning,__WFILE__, __LINE__,__WFUNCSIG__).Log LOGMESSAGE;} /// Error Log #define LOG_ERROR(LOGMESSAGE) {Nave::NFLog::Proxy(Nave::NFLog::Error,__WFILE__, __LINE__,__WFUNCSIG__).Log LOGMESSAGE;} /// Exeption Log #define LOG_EXCEPTION(LOGMESSAGE) {Nave::NFLog::Proxy(Nave::NFLog::Exception,__WFILE__, __LINE__,__WFUNCSIG__).Log LOGMESSAGE;} /// Important Log #define LOG_IMPORTANT(LOGMESSAGE) {Nave::NFLog::Proxy(Nave::NFLog::Important,__WFILE__, __LINE__,__WFUNCSIG__).Log LOGMESSAGE;}