성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
[이승준] 완전히 잘못 짚었습니다. 댓글 지우고 싶네요. 검색을 해보...
[정성태] 우선 답글 감사합니다. ^^ 그런데, 사실 저 예제는 (g...
[이승준] 수정이 안되어서... byteArray는 BYTE* 타입입니다...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>mstest, QTAgent의 로그 파일 설정 방법</h1> <p> 지난 글에서 mstest.exe에 대한 로그 파일 남기는 법을 설명했는데요.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/11886'>http://www.sysnet.pe.kr/2/0/11886</a> </pre> <br /> mstest.exe는 내부적으로 작업 도중 QTAgent 유의 프로세스를 실행합니다. 예를 들어, 제가 테스트한 위의 글에서는 다음 위치의 "QTAgent32_40.exe"가 자식 프로세스로 실행됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\QTAgent32_40.exe </pre> <br /> 어떤 QTAgent EXE가 실행되는지는 mstest.exe.config에 설정한 로그 파일의 다음과 같은 내용을 통해 알 수 있습니다.<br /> <br /> <div style='BACKGROUND-COLOR: #ccffcc; padding: 10px 10px 5px 10px; MARGIN: 0px 10px 10px 10px; FONT-FAMILY: Malgun Gothic, Consolas, Verdana; COLOR: #005555'> V, 18600, 4, 2019/05/08, 22:34:52.240, TESTPC\mstest.exe, Win32ProcessLauncher: Starting process, C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\<span style='color: blue; font-weight: bold'>QTAgent32_40.exe</span> /agentKey cc716901-a8a3-492b-a81c-49c087b71e7e /hostProcessId 18600 /hostIpcPortName eqt-24b2d2e6-eeb3-4aa4-be77-56ccfd8beb3e... </div><br /> <br /> 물론 mstest.exe.config의 로그 설정은 QTAgent32_40.exe에는 통하지 않습니다. 따라서 별도로 QTAgent32_40.exe.config 파일에 로그 설정을 해야 하는데 방법은 mstest.exe.config의 것과 동일합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > <?xml version ="1.0"?> <configuration> <!-- ...[생략]... --> <!-- 참고: https://blogs.msdn.microsoft.com/aseemb/2010/03/07/how-to-enable-test-agent-logs/ --> <span style='color: blue; font-weight: bold'><system.diagnostics> <switches> <add name="EqtTraceLevel" value="4" /> </switches> <trace autoflush="true"> <listeners> <add name="eqtlistener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\Temp\TestRunner1.log"/> </listeners> </trace> </system.diagnostics></span> </configuration> </pre> <br /> 이 설정을 하면, ".loadtest" 파일에 설정한 부하 테스트의 수행과 관련된 로그들이 남게 됩니다. 위의 설정에 따라 생성된 TestRunner1.log 파일의 내용을 보면 초기에 다음의 내용을 담고 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > no internal listener being created, appsetting set to 'no' </pre> <br /> 바로 저 내용이 <a target='tab' href='https://blogs.msdn.microsoft.com/aseemb/2010/03/07/how-to-enable-test-agent-logs/'>How to enable test agent logs</a> 글에서 설명한 appSettings의 CreateTraceListener 설정입니다. 해당 옵션을 "yes"로 설정하면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > <appSettings> <add key="StopTestRunCallTimeoutInSeconds" value="5"/> <add key="LogSizeLimitInMegs" value="20"/> <span style='color: blue; font-weight: bold'><add key="CreateTraceListener" value="yes"/></span> <add key="GetCollectorDataTimeout" value="300"/> </appSettings> </pre> <br /> 이번에는 mstest.exe 수행 시 다음과 같은 오류 메시지를 볼 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\temp> mstest.exe /testcontainer:c:\temp\test.loadtest ??Microsoft (R) Test Execution Command Line Tool Version 16.0.28326.58 Copyright (c) Microsoft Corporation. All rights reserved. Loading c:\temp\test.loadtest... Starting execution... Final Test Results: Results Top Level Tests ------- --------------- Not Executed c:\temp\test.loadtest 0/1 test(s) Passed, 1 Not Executed Summary ------- Test Run Error. Not Executed 1 --------------- Total 1 Results file: C:\temp\TestResults\TestUsr_TESTPC 2019-05-08 22_44_48.trx Test Settings: Default Test Settings Run has the following issue(s): <span style='color: blue; font-weight: bold'>Test host process exited unexpectedly. Failed to queue test run 'TestUsr@TESTPC 2019-05-08 22:44:48': Unable to start the agent process.</span> </pre> <br /> 원인은, 남겨진 TestRunner1.log 파일을 보면 알 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > W, 10900, 1, 2019/05/08, 22:44:48.582, TESTPC\QTAgent32_40.exe, AgentProcess:CurrentDomain_UnhandledException: Entered W, 10900, 1, 2019/05/08, 22:44:48.590, TESTPC\QTAgent32_40.exe, EqtTrace: Unable to write to event log 'Application', source 'VSTTAgentProcess': The source was not found, but some or all event logs could not be searched. To create the source, you need permission to read all event logs to make sure that the new source name is unique. Inaccessible logs: Security, State. E, 10900, 1, 2019/05/08, 22:44:48.590, TESTPC\QTAgent32_40.exe, AgentProcess:CurrentDomain_UnhandledException: IsTerminating : System.Security.SecurityException: The source was not found, but some or all event logs could not be searched. To create the source, you need permission to read all event logs to make sure that the new source name is unique. Inaccessible logs: Security, State. at System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate) at System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate) at System.Diagnostics.EventLogInternal.VerifyAndCreateSource(String sourceName, String currentMachineName) at System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData) at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type) at Microsoft.VisualStudio.TestTools.Execution.ConfigurationHelper.LogError(String processName, String message) at Microsoft.VisualStudio.TestTools.Execution.ConfigurationHelper.CreateTraceListener(String fileName, String processName) at Microsoft.VisualStudio.TestTools.Agent.AgentProcess.Main(String[] args) The Zone of the assembly that failed was: MyComputer </pre> <br /> 즉, 일반 사용자 권한으로는 이벤트 로그에 VSTTAgentProcess 소스를 생성할 수 없으므로 정상적인 실행을 할 수 없는 것입니다. 따라서 관리자 권한으로 mstest.exe를 수행해야 하고, 이번에는 CreateTraceListener=yes 설정으로 인해 VSTTAgentProcess.log 로그 파일이 다음의 경로에 생성됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE </pre> <br /> 사실, 이벤트 로그가 아니더라도 저렇게 Program Files 폴더에 로그 파일을 쓰게 되므로 결국 관리자 권한이 꼭 필요하게 됩니다. 그런데 VSTTAgentProcess.log 로그 파일을 보면 기존 로그(TestRunner1.log) 파일에 써진 내용과 거의 다른 점이 없습니다. 따라서 굳이 저 옵션을 켜서 불편하게 관리자 권한을 사용할 필요는 없습니다.<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1367
(왼쪽의 숫자를 입력해야 합니다.)