Commit a67a5198 authored by Oleg.Korshul's avatar Oleg.Korshul Committed by Alexander Trofimov

включение логов в конфиге

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@64270 954022d7-b5bf-4e40-9824-e11837661b57
parent 1ccf28be
......@@ -946,6 +946,25 @@ namespace NSFile
return FALSE;
}
static FILE* OpenFileNative(const std::wstring& sFileName, const std::wstring& sMode)
{
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(_WIN64)
return _wfopen(sFileName.c_str(), sMode.c_str());
#else
BYTE* pUtf8 = NULL;
LONG lLen = 0;
CUtf8Converter::GetUtf8StringFromUnicode(sFileName.c_str(), sFileName.length(), pUtf8, lLen, false);
BYTE* pMode = NULL;
LONG lLenMode;
CUtf8Converter::GetUtf8StringFromUnicode(sMode.c_str(), sMode.length(), pMode, lLenMode, false)
m_pFile = fopen((char*)pUtf8, (char*)pMode);
delete [] pUtf8;
delete [] pMode;
#endif
}
};
class CBase64Converter
......
......@@ -8,35 +8,6 @@
#include "../xml/include/xmlutils.h"
// TEST!!!
#if 0
#define _LOG_ERRORS_TO_FILE_
#endif
#ifdef _LOG_ERRORS_TO_FILE_
void __log_error_(const std::wstring& strType, const std::wstring& strError)
{
FILE* f = fopen("C:/doct_renderer_errors.txt", "a+");
std::string sT = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strType);
std::string sE = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strError);
fprintf(f, sT.c_str());
fprintf(f, ": ");
fprintf(f, sE.c_str());
fprintf(f, "\n");
fclose(f);
}
#define _LOGGING_ERROR_(type, err) __log_error_(type, err);
#else
#define _LOGGING_ERROR_(type, err)
#endif
void CreateNativeObject(const v8::FunctionCallbackInfo<v8::Value>& args)
{
v8::Isolate* isolate = v8::Isolate::GetCurrent();
......@@ -167,11 +138,128 @@ namespace NSDoctRenderer
string_replace(text, L"\"", L"&quot;");
}
///
/// \brief Save File method
///
class CDoctRenderer_Private
{
public:
CExecuteParams m_oParams;
std::wstring m_strConfigDir;
std::wstring m_strConfigPath;
CArray<std::wstring> m_arrFiles;
std::wstring m_strDoctSDK;
std::wstring m_strPpttSDK;
std::wstring m_strXlstSDK;
std::wstring m_strEditorType;
std::wstring m_strFilePath;
bool m_bIsInitTypedArrays;
std::vector<std::wstring> m_arImagesInChanges;
std::wstring m_sConsoleLogFile;
std::wstring m_sErrorsLogFile;
public:
CDoctRenderer_Private()
{
m_bIsInitTypedArrays = false;
m_strConfigDir = NSFile::GetProcessDirectory() + L"/";
m_strConfigPath = m_strConfigDir + L"DoctRenderer.config";
XmlUtils::CXmlNode oNode;
if (oNode.FromXmlFile(m_strConfigPath))
{
XmlUtils::CXmlNodes oNodes;
if (oNode.GetNodes(L"file", oNodes))
{
int nCount = oNodes.GetCount();
XmlUtils::CXmlNode _node;
for (int i = 0; i < nCount; ++i)
{
oNodes.GetAt(i, _node);
std::wstring strFilePath = _node.GetText();
if (NSFile::CFileBinary::Exists(strFilePath) &&
!NSFile::CFileBinary::Exists(m_strConfigDir + strFilePath))
m_arrFiles.Add(strFilePath);
else
m_arrFiles.Add(m_strConfigDir + strFilePath);
}
}
}
m_strDoctSDK = L"";
m_strPpttSDK = L"";
m_strXlstSDK = L"";
XmlUtils::CXmlNode oNodeSdk = oNode.ReadNode(L"DoctSdk");
if (oNodeSdk.IsValid())
m_strDoctSDK = oNodeSdk.GetText();
oNodeSdk = oNode.ReadNode(L"PpttSdk");
if (oNodeSdk.IsValid())
m_strPpttSDK = oNodeSdk.GetText();
oNodeSdk = oNode.ReadNode(L"XlstSdk");
if (oNodeSdk.IsValid())
m_strXlstSDK = oNodeSdk.GetText();
if (!NSFile::CFileBinary::Exists(m_strDoctSDK))
m_strDoctSDK = m_strConfigDir + m_strDoctSDK;
if (!NSFile::CFileBinary::Exists(m_strPpttSDK))
m_strPpttSDK = m_strConfigDir + m_strPpttSDK;
if (!NSFile::CFileBinary::Exists(m_strXlstSDK))
m_strXlstSDK = m_strConfigDir + m_strXlstSDK;
m_sConsoleLogFile = L"";
m_sErrorsLogFile = L"";
XmlUtils::CXmlNode oNodeConsoleLogFile = oNode.ReadNode(L"LogFileConsoleLog");
if (oNodeConsoleLogFile.IsValid())
{
m_sConsoleLogFile = oNodeConsoleLogFile.GetText();
if (!NSFile::CFileBinary::Exists(m_sConsoleLogFile))
m_sConsoleLogFile = m_strConfigDir + m_sConsoleLogFile;
}
XmlUtils::CXmlNode oNodeErrorsLogFile = oNode.ReadNode(L"LogFileErrors");
if (oNodeErrorsLogFile.IsValid())
{
m_sErrorsLogFile = oNodeErrorsLogFile.GetText();
if (!NSFile::CFileBinary::Exists(m_sErrorsLogFile))
m_sErrorsLogFile = m_strConfigDir + m_sErrorsLogFile;
}
}
~CDoctRenderer_Private()
{
}
public:
void _LOGGING_ERROR_(const std::wstring& strType, const std::wstring& strError)
{
if (m_sErrorsLogFile.empty())
return;
FILE* f = NSFile::CFileBinary::OpenFileNative(m_sErrorsLogFile, L"a+");
std::string sT = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strType);
std::string sE = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(strError);
fprintf(f, sT.c_str());
fprintf(f, ": ");
fprintf(f, sE.c_str());
fprintf(f, "\n");
fclose(f);
}
static bool Doct_renderer_SaveFile(CExecuteParams* pParams,
bool Doct_renderer_SaveFile(CExecuteParams* pParams,
CNativeControl* pNative,
v8::Isolate* isolate,
v8::Local<v8::Object>& global_js,
......@@ -197,8 +285,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"save_code", strCode)
_LOGGING_ERROR_(L"save", strException)
_LOGGING_ERROR_(L"save_code", strCode);
_LOGGING_ERROR_(L"save", strException);
strError = L"code=\"save\"";
bIsBreak = true;
......@@ -239,8 +327,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"save_code", strCode)
_LOGGING_ERROR_(L"save", strException)
_LOGGING_ERROR_(L"save_code", strCode);
_LOGGING_ERROR_(L"save", strException);
strError = L"code=\"save\"";
bIsBreak = true;
......@@ -276,8 +364,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"calculate_code", strCode)
_LOGGING_ERROR_(L"calculate", strException)
_LOGGING_ERROR_(L"calculate_code", strCode);
_LOGGING_ERROR_(L"calculate", strException);
strError = L"code=\"calculate\"";
bIsBreak = true;
......@@ -300,8 +388,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"calculate_code", strCode)
_LOGGING_ERROR_(L"calculate", strException)
_LOGGING_ERROR_(L"calculate_code", strCode);
_LOGGING_ERROR_(L"calculate", strException);
strError = L"code=\"calculate\"";
bIsBreak = true;
......@@ -327,8 +415,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"save_code", strCode)
_LOGGING_ERROR_(L"save", strException)
_LOGGING_ERROR_(L"save_code", strCode);
_LOGGING_ERROR_(L"save", strException);
strError = L"code=\"save\"";
bIsBreak = true;
......@@ -355,89 +443,7 @@ namespace NSDoctRenderer
return bIsBreak;
}
///
class CDoctRenderer_Private
{
public:
CExecuteParams m_oParams;
std::wstring m_strConfigDir;
std::wstring m_strConfigPath;
CArray<std::wstring> m_arrFiles;
std::wstring m_strDoctSDK;
std::wstring m_strPpttSDK;
std::wstring m_strXlstSDK;
std::wstring m_strEditorType;
std::wstring m_strFilePath;
bool m_bIsInitTypedArrays;
std::vector<std::wstring> m_arImagesInChanges;
public:
CDoctRenderer_Private()
{
m_bIsInitTypedArrays = false;
m_strConfigDir = NSFile::GetProcessDirectory() + L"/";
m_strConfigPath = m_strConfigDir + L"DoctRenderer.config";
XmlUtils::CXmlNode oNode;
if (oNode.FromXmlFile(m_strConfigPath))
{
XmlUtils::CXmlNodes oNodes;
if (oNode.GetNodes(L"file", oNodes))
{
int nCount = oNodes.GetCount();
XmlUtils::CXmlNode _node;
for (int i = 0; i < nCount; ++i)
{
oNodes.GetAt(i, _node);
std::wstring strFilePath = _node.GetText();
if (NSFile::CFileBinary::Exists(strFilePath) &&
!NSFile::CFileBinary::Exists(m_strConfigDir + strFilePath))
m_arrFiles.Add(strFilePath);
else
m_arrFiles.Add(m_strConfigDir + strFilePath);
}
}
}
m_strDoctSDK = L"";
m_strPpttSDK = L"";
m_strXlstSDK = L"";
XmlUtils::CXmlNode oNodeSdk = oNode.ReadNode(L"DoctSdk");
if (oNodeSdk.IsValid())
m_strDoctSDK = oNodeSdk.GetText();
oNodeSdk = oNode.ReadNode(L"PpttSdk");
if (oNodeSdk.IsValid())
m_strPpttSDK = oNodeSdk.GetText();
oNodeSdk = oNode.ReadNode(L"XlstSdk");
if (oNodeSdk.IsValid())
m_strXlstSDK = oNodeSdk.GetText();
if (!NSFile::CFileBinary::Exists(m_strDoctSDK))
m_strDoctSDK = m_strConfigDir + m_strDoctSDK;
if (!NSFile::CFileBinary::Exists(m_strPpttSDK))
m_strPpttSDK = m_strConfigDir + m_strPpttSDK;
if (!NSFile::CFileBinary::Exists(m_strXlstSDK))
m_strXlstSDK = m_strConfigDir + m_strXlstSDK;
}
~CDoctRenderer_Private()
{
}
public:
bool ExecuteScript(const std::string& strScript, std::wstring& strError, std::wstring& strReturnParams)
{
v8::Platform* platform = v8::platform::CreateDefaultPlatform();
......@@ -478,8 +484,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"compile_code", strCode)
_LOGGING_ERROR_(L"compile", strException)
_LOGGING_ERROR_(L"compile_code", strCode);
_LOGGING_ERROR_(L"compile", strException);
strError = L"code=\"compile\"";
bIsBreak = true;
......@@ -495,8 +501,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"run_code", strCode)
_LOGGING_ERROR_(L"run", strException)
_LOGGING_ERROR_(L"run_code", strCode);
_LOGGING_ERROR_(L"run", strException);
strError = L"code=\"run\"";
bIsBreak = true;
......@@ -525,8 +531,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"run_code", strCode)
_LOGGING_ERROR_(L"run", strException)
_LOGGING_ERROR_(L"run_code", strCode);
_LOGGING_ERROR_(L"run", strException);
strError = L"code=\"run\"";
bIsBreak = true;
......@@ -537,6 +543,7 @@ namespace NSDoctRenderer
v8::Handle<v8::External> field = v8::Handle<v8::External>::Cast(objNative->GetInternalField(0));
pNative = static_cast<CNativeControl*>(field->Value());
pNative->m_sConsoleLogFile = m_sConsoleLogFile;
}
}
}
......@@ -577,8 +584,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"open_code", strCode)
_LOGGING_ERROR_(L"open", strException)
_LOGGING_ERROR_(L"open_code", strCode);
_LOGGING_ERROR_(L"open", strException);
strError = L"code=\"open\"";
bIsBreak = true;
......@@ -621,8 +628,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode)
_LOGGING_ERROR_(L"change", strException)
_LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException);
char buffer[50];
sprintf(buffer, "index=\"%d\"", pNative->m_nCurrentChangesNumber);
......@@ -703,8 +710,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode)
_LOGGING_ERROR_(L"change", strException)
_LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"databaseopenjs\"";
bIsBreak = true;
......@@ -719,8 +726,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode)
_LOGGING_ERROR_(L"change", strException)
_LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"databaseopenjs\"";
bIsBreak = true;
......@@ -757,8 +764,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode)
_LOGGING_ERROR_(L"change", strException)
_LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"preview" + std::to_wstring(nIndexMM) + L"\"";
bIsBreak = true;
......@@ -773,7 +780,7 @@ namespace NSDoctRenderer
m_oParams.m_strDstFilePath += (L"/file" + std::to_wstring(nIndexMM));
sSaveFile = m_oParams.m_strDstFilePath;
bIsBreak = NSDoctRenderer::Doct_renderer_SaveFile(&m_oParams, pNative, isolate, global_js,
bIsBreak = Doct_renderer_SaveFile(&m_oParams, pNative, isolate, global_js,
args, try_catch, strError);
m_oParams.m_strDstFilePath = sSaveOld;
......@@ -797,8 +804,8 @@ namespace NSDoctRenderer
std::wstring strCode = to_cstring(try_catch.Message()->GetSourceLine());
std::wstring strException = to_cstring(try_catch.Message()->Get());
_LOGGING_ERROR_(L"change_code", strCode)
_LOGGING_ERROR_(L"change", strException)
_LOGGING_ERROR_(L"change_code", strCode);
_LOGGING_ERROR_(L"change", strException);
strError = L"mailmerge=\"field" + std::to_wstring(nIndexMM) + L"\"";
bIsBreak = true;
......@@ -820,7 +827,7 @@ namespace NSDoctRenderer
// SAVE
if (!bIsBreak && !bIsMailMerge)
{
bIsBreak = NSDoctRenderer::Doct_renderer_SaveFile(&m_oParams, pNative, isolate, global_js, args, try_catch, strError);
bIsBreak = Doct_renderer_SaveFile(&m_oParams, pNative, isolate, global_js, args, try_catch, strError);
}
}
......
......@@ -53,6 +53,8 @@ public:
std::map<std::wstring, bool> m_mapImagesInChanges;
std::wstring m_sConsoleLogFile;
public:
CMemoryStream* m_pStream;
......@@ -67,6 +69,8 @@ public:
m_pSaveBinary = NULL;
m_nSaveLen = 0;
m_nSaveBinaryLen = 0;
m_sConsoleLogFile = L"";
}
~CNativeControl()
{
......@@ -142,12 +146,13 @@ public:
void ConsoleLog(/*UTF8*/const std::string& strVal)
{
#if 1
FILE* f = fopen("C:/log.txt", "a+");
if (!m_sConsoleLogFile.empty())
{
FILE* f = NSFile::CFileBinary::OpenFileNative(m_sConsoleLogFile, L"a+");
fprintf(f, strVal.c_str());
fprintf(f, "\n");
fclose(f);
#endif
}
}
void CheckFonts()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment