⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplelogger.cpp

📁 OSB-PIK-OpenVXI-3.0.0源代码 “中国XML论坛 - 专业的XML技术讨论区--XML在语音技术中的应用”
💻 CPP
字号:
/****************License************************************************ * * Copyright 2000-2001.  SpeechWorks International, Inc.     * * Use of this software is subject to notices and obligations set forth * in the SpeechWorks Public License - Software Version 1.1 which is * included with this software. * * SpeechWorks is a registered trademark, and SpeechWorks Here, * DialogModules and the SpeechWorks logo are trademarks of SpeechWorks * International, Inc. in the United States and other countries. * *********************************************************************** * * Error message logging to files. * ***********************************************************************/#include "SimpleLogger.hpp"#include "VXIlog.h"#include <sstream>static unsigned int MESSAGE_BASE;static const VXIchar * const MODULE_NAME  = COMPANY_DOMAIN L".vxi";// ------*---------*---------*---------*---------*---------*---------*---------static const VXIchar * const TAG_ENCODING  = L"encoding";static const VXIchar * const TAG_EXCEPTION = L"exception";static const VXIchar * const TAG_MESSAGE   = L"message";static const VXIchar * const TAG_RECORDING = L"recording";static const VXIchar * const TAG_LABEL     = L"label";static const VXIchar * const TAG_EXPR      = L"expr";static const VXIchar * const TAG_CONTENT   = L"content";inline const VXIchar * const GetInfoTagText(SimpleLogger::InfoTag t){  switch (t) {  case SimpleLogger::ENCODING:    return TAG_ENCODING;  case SimpleLogger::EXCEPTION:   return TAG_EXCEPTION;  case SimpleLogger::MESSAGE:     return TAG_MESSAGE;  case SimpleLogger::RECORDING:   return TAG_RECORDING;  default:                        return TAG_MESSAGE;  }}// ------*---------*---------*---------*---------*---------*---------*---------class SimpleLoggerImpl : public SimpleLogger {public:  SimpleLoggerImpl(VXIlogInterface * l) : log(l)  {    isVectorSupported = LOG_EVENT_VECTOR_SUPPORTED(l);    isContentSupported = LOG_CONTENT_METHODS_SUPPORTED(l);  }  ~SimpleLoggerImpl() { }  // Diagnostic...  typedef unsigned int TAGID;  virtual bool IsLogging(TAGID tagID) const  { return (log->DiagnosticIsEnabled(log, MESSAGE_BASE + tagID) == TRUE); }  virtual std::basic_ostream<wchar_t> & StartDiagnostic(TAGID tagID) const  {     id = tagID;    buffer.str(L"");    return buffer; }  virtual void EndDiagnostic() const  { if (buffer.str().empty()) return;    log->Diagnostic(log, MESSAGE_BASE + id, L"", buffer.str().c_str()); }  virtual void LogDiagnostic(TAGID tagID, const wchar_t * text) const  { log->Diagnostic(log, MESSAGE_BASE + tagID, L"" , text); }      virtual void LogDiagnostic(TAGID tagID, const wchar_t* subtag,                             const wchar_t * format, ...)  {    va_list args;    va_start(args, format);    log->VDiagnostic(log, MESSAGE_BASE + tagID, subtag, format, args);    va_end(args);    }  // Error  virtual void LogError(int errorNum,                        const wchar_t * key, const wchar_t * txt) const  { log->Error(log, MODULE_NAME, errorNum, L"%s%s", key, txt); }  virtual void LogError(int errorNum,                        SimpleLogger::InfoTag i1, const wchar_t * txt1,                        SimpleLogger::InfoTag i2, const wchar_t * txt2) const  { log->Error(log, MODULE_NAME, errorNum, L"%s%s%s%s",                GetInfoTagText(i1), txt1, GetInfoTagText(i2), txt2); }  virtual void LogError(int errorNum,                        SimpleLogger::InfoTag i, const wchar_t * txt) const  { log->Error(log, MODULE_NAME, errorNum, L"%s%s", GetInfoTagText(i), txt); }  virtual void LogError(int errorNum) const  { log->Error(log, MODULE_NAME, errorNum, NULL); }  // Event  virtual void LogEvent(int eventNum, const VXIVector * keys,                        const VXIVector * values) const  { if (isVectorSupported)      log->EventVector(log, eventNum, keys, values); }  // Content logging.  virtual bool LogContent(const VXIchar *mimetype, 			  const VXIbyte *content, 			  VXIulong size, 			  VXIString **key, 			  VXIString **value) const;private:  VXIlogInterface * log;  mutable TAGID id;  mutable std::basic_ostringstream<wchar_t> buffer;    bool isVectorSupported;  bool isContentSupported;};bool SimpleLoggerImpl::LogContent(const VXIchar *mimetype, 				  const VXIbyte *content, 				  VXIulong size, 				  VXIString **key, 				  VXIString **value) const {  VXIlogResult ret = VXIlog_RESULT_SUCCESS;  *key = NULL;  *value = NULL;    // Only dump the page if content logging is supported by the log  // implementation  if (isContentSupported) {    VXIlogStream *stream = NULL;    ret = log->ContentOpen(log, MODULE_NAME, mimetype, key, value, &stream);    if (ret == VXIlog_RESULT_SUCCESS) {      VXIulong nwrite = 0;      ret = log->ContentWrite(log, content, size, &nwrite, stream);      log->ContentClose(log, &stream);    }        if (ret != VXIlog_RESULT_SUCCESS)      LogError(990);  } else {    ret = VXIlog_RESULT_FAILURE;  }    return (ret == VXIlog_RESULT_SUCCESS ? true : false);}SimpleLogger * SimpleLogger::CreateResource(VXIlogInterface * l){  return new SimpleLoggerImpl(l);}void SimpleLogger::DestroyResource(SimpleLogger * & log){  if (log == NULL) return;  delete log;  log = NULL;}void SimpleLogger::SetMessageBase(unsigned int base){  MESSAGE_BASE = base;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -