Включение логирования в SMath Studio
Если вы столкнулись с проблемой или неожиданным поведением в SMath Studio, включение встроенного логирования поможет диагностировать проблему. Файл журнала фиксирует подробную трассировочную информацию, которую вы (или ваш поставщик) можете использовать для выявления первопричины.
Предварительные условия¶
Найдите, куда установлена SMath Studio:
- Установка на машину: C:\Program Files (x86)\SMath\ (или похожий путь)
- Установка для пользователя: папка профиля вашего пользователя (например, C:\Users\<ВашеИмя>...)
Включение логирования¶
- Закройте все запущенные экземпляры SMath Studio. Убедитесь, что все процессы SMath Studio закрыты перед редактированием файла конфигурации.
- Перейдите в папку установки SMath Studio и откройте файл Solver.exe.config в текстовом редакторе (например, в Блокноте). Обратите внимание: для изменения этого файла могут потребоваться права администратора, если SMath Studio была установлена на машину целиком. Запустите ваш текстовый редактор от имени администратора через контекстное меню.
-
Раскомментируйте блоки логирования. В файле по умолчанию есть два закомментированных блока. Нужно удалить XML-маркеры комментариев (
<!--и-->), чтобы конфигурация стала активной.Ниже приведено содержимое файла по умолчанию (закомментированное) — как элементы
<source>, так и элемент слушателя<add>обёрнуты в комментарии:<?xml version="1.0" encoding="utf-8"?> <configuration> <system.diagnostics> <sources> <!-- The name attribute of <source> element is split by dot in order to build the hierarchy of sources for loggers. The source with name="root" defines the root in the hierarchy. Use attribute newSwitch="true" in order to redefine the switch for the related source and its descendants. Use attribute newListeners="true" in order to redefine the listeners for the related source and its descendants. Supported values of attribute switchValue in order of verbosity: "Off" (default), "Critical", "Error", "Warning", "Information", "Verbose" --> <!-- <source name="root"> <listeners> <add name="file" /> </listeners> </source> <source name="SMath.Controls" newSwitch="true" switchValue="Error" /> <source name="SMath.Environment" newSwitch="true" switchValue="Error" /> <source name="SMath.Document" newSwitch="true" switchValue="Error" /> <source name="SMath.Manager" newSwitch="true" switchValue="Error" /> <source name="SMath.UI" newSwitch="true" switchValue="Error" /> --> </sources> <sharedListeners> <!-- Writes trace to file --> <!-- <add name="file" type="SMath.Manager.Logging.FileTraceListener, SMath.Manager" traceOutputOptions="DateTime,ProcessId,ThreadId" initializeData="%APPDATA%\SMath\Solver.log"/> --> </sharedListeners> <trace autoflush="true" indentsize="4" /> </system.diagnostics> </configuration>Раскомментируйте два XML-блока, содержащих реальную конфигурацию (элементы
<source>и элемент слушателя<add>), сохранив при этом описательный комментарий (первый блок с пояснительным текстом). После раскомментирования файл должен выглядеть так:<?xml version="1.0" encoding="utf-8"?> <configuration> <system.diagnostics> <sources> <!-- The name attribute of <source> element is split by dot in order to build the hierarchy of sources for loggers. The source with name="root" defines the root in the hierarchy. Use attribute newSwitch="true" in order to redefine the switch for the related source and its descendants. Use attribute newListeners="true" in order to redefine the listeners for the related source and its descendants. Supported values of attribute switchValue in order of verbosity: "Off" (default), "Critical", "Error", "Warning", "Information", "Verbose" --> <source name="root"> <listeners> <add name="file" /> </listeners> </source> <source name="SMath.Controls" newSwitch="true" switchValue="Error" /> <source name="SMath.Environment" newSwitch="true" switchValue="Error" /> <source name="SMath.Document" newSwitch="true" switchValue="Error" /> <source name="SMath.Manager" newSwitch="true" switchValue="Error" /> <source name="SMath.UI" newSwitch="true" switchValue="Error" /> </sources> <sharedListeners> <!-- Writes trace to file --> <add name="file" type="SMath.Manager.Logging.FileTraceListener, SMath.Manager" traceOutputOptions="DateTime,ProcessId,ThreadId" initializeData="%APPDATA%\SMath\Solver.log"/> </sharedListeners> <trace autoflush="true" indentsize="4" /> </system.diagnostics> </configuration>Совет: раскомментируйте только те XML-элементы, которые содержат вложенные XML-структуры (элементы
<source>и<add>). Оставьте чисто описательный текст закомментированным. -
Сохраните изменённый файл Solver.exe.config и закройте текстовый редактор.
- Откройте SMath Studio и повторите шаги, которые привели к проблеме. Теперь приложение будет записывать трассировочный вывод в файл журнала.
- Получите файл журнала. Перейдите в папку журнала (права администратора не требуются): %APPDATA%\SMath\ (нажмите Win+R, введите путь и нажмите Enter, чтобы быстро открыть папку). Файл журнала называется Solver.log.
- Изучите журнал. Откройте Solver.log в текстовом редакторе и прокрутите к последним строкам — как правило, именно там записана информация о нужной проблеме. Либо самостоятельно определите сообщение об ошибке/исключении, либо приложите файл журнала (или его значимую часть) к обращению в поддержку вашего поставщика.
Отключение логирования¶
После решения проблемы или передачи журнала рекомендуется снова отключить логирование:
- Закройте SMath Studio.
- Заново закомментируйте два XML-блока в Solver.exe.config (восстановите исходное состояние, показанное выше).
- Сохраните файл.
- При желании удалите %APPDATA%\SMath\Solver.log, чтобы очистить место.
Обратите внимание: если оставить логирование включённым, файл Solver.log будет неконтролируемо расти со временем, занимая место на диске и потенциально замедляя операции с файлами. По завершении диагностики рекомендуется вернуть исходное (закомментированное) состояние.