W3C日志处理程序c++的示例

枚举{W3CLOG_date = 0 x00000001,W3CLOG_time = 0 x00000002,W3CLOG_c_ip = 0 x00000004,W3CLOG_cs_username = 0 x00000008,W3CLOG_s_sitename = 0 x00000010,W3CLOG_s_computername = 0 x00000020,W3CLOG_s_ip = 0 x00000040,W3CLOG_s_port = 0 x00000080,W3CLOG_cs_method = 0 x00000100,W3CLOG_cs_uri_stem = 0 x00000200,W3CLOG_cs_uri_query = 0 x00000400,W3CLOG_sc_status = 0 x00000800,W3CLOG_sc_win32_status = 0 x00001000,W3CLOG_sc_bytes = 0 x00002000,W3CLOG_cs_bytes = 0 x00004000,W3CLOG_time_taken = 0 x00008000,W3CLOG_cs_version = 0 x00010000,W3CLOG_cs_host = 0 x00020000,W3CLOG_cs_user_agent = 0 x00040000,W3CLOG_cs_cookie = 0 x00080000,W3CLOG_cs_referer = 0 x00100000,W3CLOG_sc_substatus = 0 x00200000,};CW3CLogHandler:公共IltmsLogHandler{受保护的:BOOL m_enable;CAtlFile m_file;DWORD m_fields;BOOL m_localtime;COleDateTime m_dtfile;装运箱m_software;装运箱m_folder;装运箱m_prefix;装运箱逃生(LPCOLESTR年代);BOOL CreateLog(日期时间戳);装运箱GetLogPath(日期时间戳);HRESULT WriteString (LPCTSTR年代);COleDateTime取得时间(日期时间戳);HRESULT ResolvePath (LPCTSTR键,CString&解决);公共:CW3CLogHandler (LPCTSTR前缀= _T (“ltms_”),LPCTSTR软件= _T (“领导媒体服务器”),BOOL启用= TRUE, LPCTSTR文件夹= _T (“% ltmsLogFolder %”),字字段= 0 xfffffffful BOOL localtime = FALSE);虚拟~ CW3CLogHandler (无效);虚拟HRESULT STDMETHODCALLTYPE QueryInterface (/ * [)* / REFIID riid, / * [iid_is][出]* / __RPC__deref_out无效__RPC_FAR * __RPC_FAR * ppvObject);虚拟ULONG STDMETHODCALLTYPE AddRef (无效);虚拟ULONG STDMETHODCALLTYPE版本(无效);虚拟/ * [helpstring] [id] * / HRESULT STDMETHODCALLTYPE InitializeLog(日期时间戳);虚拟/ * [helpstring] [id] * / HRESULT STDMETHODCALLTYPE TerminateLog (无效);虚拟/ * [helpstring] [id] * / HRESULT STDMETHODCALLTYPE LogInformation (/ * []* / IltmsLogInformation *信息);};CW3CLogHandler:: CW3CLogHandler (LPCTSTR前缀,LPCTSTR软件、BOOL使LPCTSTR文件夹,DWORD字段,BOOL作用):m_fields(字段),m_enable(启用),m_prefix(前缀),m_folder(文件夹),m_software(软件),m_localtime(本地时间){}CW3CLogHandler:: ~ CW3CLogHandler (无效){}HRESULT STDMETHODCALLTYPE CW3CLogHandler: QueryInterface (/ * [)* / REFIID riid, / * [iid_is][出]* / __RPC__deref_out无效__RPC_FAR * __RPC_FAR * ppvObject){如果(riid = = IID_IUnknown | | riid = = __uuidof (IltmsLogHandler)){* ppvObject = (无效*)(IltmsLogHandler *);返回S_OK;}返回E_NOINTERFACE;}ULONG STDMETHODCALLTYPE CW3CLogHandler:: AddRef (无效){返回1;}ULONG STDMETHODCALLTYPE CW3CLogHandler::释放(无效){返回1;}HRESULT CW3CLogHandler: WriteString (LPCTSTR s){CStringA t(年代);返回m_file。写(t, t.GetLength ());}COleDateTime CW3CLogHandler:取得时间(日期时间戳){COleDateTime dt(时间戳);如果(m_localtime){SYSTEMTIME timeUTC;dt.GetAsSystemTime (timeUTC);SYSTEMTIME timeLocal;SystemTimeToTzSpecificLocalTime (NULL, &timeUTC &timeLocal);dt = COleDateTime (timeLocal);}返回dt;}HRESULT CW3CLogHandler:: ResolvePath (LPCTSTR键,CString&解决){HRESULT人力资源;CComPtr < IltmsPathResolver >解析器;hr = CoCreateInstance (__uuidof (ltmsPathResolver), NULL, CLSCTX_ALL, __uuidof (IltmsPathResolver), (无效* *)解析器);如果(失败(人力资源)返回人力资源;CComBSTR v;hr =解析器- >解决(CComBSTR(关键),增加了);如果(失败(人力资源)返回人力资源;解决= v;返回S_OK;}装运箱CW3CLogHandler: GetLogPath(日期时间戳){COleDateTime dt =取得时间(时间戳);装运箱fullpath;HRESULT hr = ResolvePath (m_folder fullpath);如果(失败(人力资源)返回_T (”“);fullpath + = _T (“\ \”);fullpath + = m_prefix;如果(m_localtime !)fullpath + = dt.Format (_T (“% y % m % d % H % m % SUTC.log”));其他的fullpath + = dt.Format (_T (“% y % m % d % H % m % S.log”));返回fullpath;}BOOL CW3CLogHandler: CreateLog(日期时间戳){如果(m_file。m_h ! = NULL)m_file.Close ();如果(m_enable !)返回虚假的;HRESULT hr = m_file.Create (GetLogPath(时间戳),GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, OPEN_ALWAYS);如果(失败(人力资源)返回虚假的;装运箱;m_dtfile =取得时间(时间戳);m_file。寻求(0,FILE_END);s.Format (_T (“#软件:% s \ r \ n”),(LPCTSTR) m_software);WriteString(年代);WriteString (_T (“#版本:1.0 \ r \ n”));COleDateTime dt =取得时间(时间戳);s = dt.Format (_T (“#日期:Y % - % - % d % H: % m: % S \ r \ n”));WriteString(年代);s = _T (“#字段:“);如果(m_fields & W3CLOG_date){s + = _T (“日期”);}如果(m_fields & W3CLOG_time){s + = _T (“时间”);}如果(m_fields & W3CLOG_s_sitename){s + = _T (“s-sitename”);}如果(m_fields & W3CLOG_s_computername){s + = _T (“s-computername”);}如果(m_fields & W3CLOG_s_ip){s + = _T (“s-ip”);}如果(m_fields & W3CLOG_cs_method){s + = _T (“cs方法”);}如果(m_fields & W3CLOG_cs_uri_stem){s + = _T (“cs-uri-stem”);}如果(m_fields & W3CLOG_cs_uri_query){s + = _T (“cs-uri-query”);}如果(m_fields & W3CLOG_s_port){s + = _T (“s-port”);}如果(m_fields & W3CLOG_cs_username){s + = _T (“cs-username”);}如果(m_fields & W3CLOG_c_ip){s + = _T (“c-ip”);}如果(m_fields & W3CLOG_cs_version){s + = _T (“cs-version”);}如果(m_fields & W3CLOG_cs_user_agent){s + = _T (“cs(用户代理)”);}如果(m_fields & W3CLOG_cs_cookie){s + = _T (“cs(饼干)”);}如果(m_fields & W3CLOG_cs_referer){s + = _T (“cs(推荐人)”);}如果(m_fields & W3CLOG_cs_host){s + = _T (“cs-host”);}如果(m_fields & W3CLOG_sc_status){s + = _T (“sc-status”);}如果(m_fields & W3CLOG_sc_substatus){s + = _T (“sc-substatus”);}如果(m_fields & W3CLOG_sc_win32_status){s + = _T (“sc-win32-status”);}如果(m_fields & W3CLOG_sc_bytes){s + = _T (“sc-bytes”);}如果(m_fields & W3CLOG_cs_bytes){s + = _T (“cs-bytes”);}如果(m_fields & W3CLOG_time_taken){s + = _T (“时间”);}s + = _T (“\ r \ n”);WriteString(年代);m_file.Flush ();返回真正的;}装运箱CW3CLogHandler:逃避(LPCOLESTR s){CStringW t;(;*年代;+ +){如果(iswprint (*) & & ! iswspace (*))t + = *年代;其他的t + = L“+”;}返回装运箱(t);}HRESULT STDMETHODCALLTYPE CW3CLogHandler: InitializeLog(日期时间戳){CreateLog(时间戳);返回S_OK;}HRESULT STDMETHODCALLTYPE CW3CLogHandler:: TerminateLog (无效){如果(m_file。m_h ! = NULL)m_file.Close ();返回S_OK;}HRESULT STDMETHODCALLTYPE CW3CLogHandler: LogInformation (/ * [)* / IltmsLogInformation *信息){装运箱;如果(m_enable !)返回S_OK;/ /检查是否我们需要将一个新文件{日期v;信息- > get_TimeStamp(增加了);COleDateTime dt =取得时间(v);如果(m_file。m_h = = NULL | | dt.GetDay () ! = m_dtfile.GetDay ()| | dt.GetMonth () ! = m_dtfile.GetMonth ()| | dt.GetYear () ! = m_dtfile.GetYear ()){如果(! CreateLog (v))返回S_OK;}}如果(m_fields & W3CLOG_date){日期v;信息- > get_TimeStamp(增加了);COleDateTime dt =取得时间(v);如果(! s.IsEmpty ())s + L =”“;s + = dt.Format (_T (“Y % - % - % d”));}如果(m_fields & W3CLOG_time){日期v;信息- > get_TimeStamp(增加了);COleDateTime dt =取得时间(v);如果(! s.IsEmpty ())s + = _T (”“);s + = dt.Format (_T (“M % H: %: % S”));}如果(m_fields & W3CLOG_s_sitename){CComBSTR v;信息- > get_SiteName(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_s_computername){CComBSTR v;信息- > get_ComputerName(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_s_ip){CComBSTR v;信息- > get_ServerIP(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + = v;}如果(m_fields & W3CLOG_cs_method){CComBSTR v;信息- > get_Method(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_cs_uri_stem){CComBSTR v;信息- > get_URIStem(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_cs_uri_query){CComBSTR v;信息- > get_URIQuery(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_s_port){长v;信息- > get_ServerPort(增加了);如果(! s.IsEmpty ())s + = _T (”“);装运箱t;t.Format (_T (“% u”),(单位)v);s + = t;}如果(m_fields & W3CLOG_cs_username){CComBSTR v;信息- > get_UserName(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_c_ip){CComBSTR v;信息- > get_ClientIP(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(s.IsEmpty ())s + = _T (“-”);其他的s + = v;}如果(m_fields & W3CLOG_cs_version){CComBSTR v;信息- > get_ProtocolVersion(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_cs_user_agent){CComBSTR v;信息- > get_UserAgent(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_cs_cookie){CComBSTR v;信息- > get_Cookie(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_cs_referer){CComBSTR v;信息- > get_Referrer(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_cs_host){CComBSTR v;信息- > get_Host(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v.Length () = = 0)s + = _T (“-”);其他的s + =逃脱(v);}如果(m_fields & W3CLOG_sc_status){长v;信息- > get_Status(增加了);如果(! s.IsEmpty ())s + = _T (”“);装运箱t;t.Format (_T (“% u”),(单位)v);s + = t;}如果(m_fields & W3CLOG_sc_substatus){长v;信息- > get_ProtocolSubStatus(增加了);如果(! s.IsEmpty ())s + = _T (”“);装运箱t;t.Format (_T (“% u”),(单位)v);s + = t;}如果(m_fields & W3CLOG_sc_win32_status){长v;信息- > get_Win32Status(增加了);如果(! s.IsEmpty ())s + = _T (”“);装运箱t;t.Format (_T (“% u”),(单位)v);s + = t;}如果(m_fields & W3CLOG_sc_bytes){长v;信息- > get_BytesSent(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v < 0){s + = _T (“-”);}其他的{装运箱t;t.Format (_T (“% u”),(单位)v);s + = t;}}如果(m_fields & W3CLOG_cs_bytes){长v;信息- > get_BytesReceived(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v < 0){s + = _T (“-”);}其他的{装运箱t;t.Format (_T (“% u”),(单位)v);s + = t;}}如果(m_fields & W3CLOG_time_taken){长v;信息- > get_TimeTaken(增加了);如果(! s.IsEmpty ())s + = _T (”“);如果(v < 0){s + = _T (“-”);}其他的{装运箱t;t.Format (_T (“% u”),(单位)v);s + = t;}}s + = _T (“\ r \ n”);WriteString(年代);m_file.Flush ();返回S_OK;}HRESULT RunServerWithLogging (无效){CComPtr < IltmsServer >服务器;HRESULT人力资源;CW3CLogHandler loghandler;/ /创建一个服务器对象的实例hr = CoCreateInstance (__uuidof (ltmsServer), NULL, CLSCTX_ALL, __uuidof (IltmsServer), (无效* *)及服务器);如果(失败(人力资源)转到错误;/ /设置日志处理程序hr =服务器- > putref_LogHandler (&loghandler);如果(失败(人力资源)转到错误;{/ /用于演示,比较我们设置的接口CComPtr < IltmsLogHandler > ihandler;hr =服务器- > get_LogHandler (&ihandler);如果(失败(人力资源)转到错误;如果(ihandler ! = (IltmsLogHandler *) &loghandler){hr = E_UNEXPECTED;转到错误;}}/ /加载配置文件位于配置文件夹下的可执行文件的文件夹/ /或注释本节运行服务器的默认设置人力资源管理- > ImportConfigFile (CComBSTR (L =服务器“% ltmsConfigFolder % \ \ ltmsServer.xml”));如果(失败(人力资源)转到错误;/ /启动服务器hr =服务器- > Start ();如果(失败(人力资源)转到错误;/ /显示一条消息,服务器正在运行,等待一个关键_tprintf (_T (“服务器已经开始。按任意键停止。\ n”));_gettc (stdin);/ /停止服务器hr =服务器- >停止();如果(失败(人力资源)转到错误;/ /删除日志处理程序hr =服务器- > putref_LogHandler(空);如果(失败(人力资源)返回人力资源;错误:返回人力资源;}
LEADTOOLS流媒体C API的帮助
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。