다음을 통해 공유


방법: 로그 파일 만들기

업데이트: 2007년 11월

상호 운용성, 프로그램 로드 및 네트워킹에 대한 진단 정보가 있는 로그 파일을 만들 수 있습니다. 레지스트리 키를 설정하여 로깅을 활성화할 수 있습니다. 우선, 일반 로깅을 사용하도록 레지스트리 키를 설정한 다음 원하는 로깅 구성 요소와 옵션에 대한 레지스트리 키를 설정합니다.

다음과 같은 방법으로 레지스트리 키를 설정할 수 있습니다.

  • Visual Studio의 원격 레지스트리 편집기를 사용합니다.

  • .NET Compact Framework 2.0 서비스 팩 1에서 Remote Performance Monitor의 로깅 옵션을 사용합니다. Remote Performance Monitor에 대한 자세한 내용은 방법: 런타임에 성능 모니터링을 참조하십시오.

  • .NET Compact Framework 3.5에서는 로깅을 사용하거나 사용하지 않도록 설정하는 단순한 그래픽 사용자 인터페이스가 제공되는 로깅 도구인 NetCFLogging.exe를 사용할 수 있습니다. 이 도구는 Power Toys for .NET Compact Framework에 포함되어 있습니다. 자세한 내용은 Power Toys for .NET Compact Framework를 참조하십시오.

  • .NET Compact Framework 버전 2.0 이상 버전에서 지원되는 RegistryRegistryKey 클래스를 사용합니다.

다음 표에서는 로그 파일에 대해 간략하게 설명합니다.

로깅 구성 요소

로그 파일 내용

Interop

COM interop 호출을 로깅합니다. P/Invoke 호출과 마샬링에 대한 정보를 제공합니다.

오류

처리되지 않은 예외와 네이티브 예외를 모두 로깅합니다. 오류는 로그 파일과 OutputDebugString에 로깅됩니다. 로그 파일은 현재 경로의 각 어셈블리에 대해 만들어지고 현재 세션에 적용됩니다. 처리되지 않은 예외나 네이티브 예외가 처음 발생한 이후에는 로그 파일이 덮어쓰여집니다.

로더

프로그램 로딩에 대한 정보를 로깅합니다. 파일 헤더에는 다음과 같은 정보가 들어 있습니다.

  • 응용 프로그램 이름

  • 프로세스 ID(Windows Embedded CE에서 제공)

  • 로그 파일이 만들어진 현지 날짜와 시간. 형식은 전역 또는 문화권에 관련된 형식이 아닙니다.

  • .NET Compact Framework 버전(예: 2.0.5021.00)

  • 플랫폼 관련 정보(예: Windows Embedded CE v5.0.1400(CEPC) WinCE5x86 debug Dev i386 IJITv2)

이 파일은 다음 정보를 제공합니다.

  • 강제 변환 상태(호환 모드)

  • 로드될 때 모듈에 할당된 신뢰 수준

  • 메서드 확인 실패

  • 형식 확인 실패

  • 어셈블리 또는 모듈 찾기나 로드 실패

  • 어셈블리 로드 성공

  • 잘못된 메타데이터 버전

  • 플랫폼 호출 DLL 찾기 실패

  • 플랫폼 호출 DLL 내에서 함수 찾기 실패

  • 정책 파일 이름 또는 정책 파일 부재 사실

  • 정책 파일 처리 중 발생한 중요 오류

  • 관리되는 어셈블리의 정책 기반 리디렉션

전역 어셈블리 캐시에 대한 정보도 포함할 수 있습니다.

네트워킹

네트워크 트래픽을 로깅합니다. 네트워킹 로그 파일은 이진 파일이므로 .NET Compact Framework 로그 뷰어인 Logviewer.exe가 없으면 액세스할 수 없습니다. .NET Compact Framework 3.5 및 이후 버전에서는 Power Toys for .NET Compact Framework에 로그 뷰어가 포함되어 있습니다. 자세한 내용은 Power Toys for .NET Compact Framework를 참조하십시오.

네트워킹 로깅은 Windows Sockets 계층에서 수행되므로 로그 파일에는 네트워크 패킷 정보만 포함됩니다. 여기에는 네트워크를 통해 보내는 데이터가 포함되며, 이 데이터는 암호화하지 않는 경우 중요한 데이터로 취급해야 합니다.

종료자

가비지 수집기에서 삭제하기 전에 정리되지 않은 개체의 클래스 이름을 로깅합니다. 이 로그는 .NET Compact Framework 3.5 및 이후 버전에서 지원됩니다.

개체 이름은 CLR(공용 언어 런타임)에서 사용할 수 없으므로 로그에 포함되지 않습니다. 그러나 삭제되지 않은 개체의 클래스 이름을 사용하여 이러한 개체를 식별할 수 있습니다. 개체가 삭제되지 않으면 응용 프로그램에서 성능 문제가 발생할 수 있습니다.

참고:

경우에 따라 응용 프로그램 코드 대신 .NET Compact Framework에서 종료자를 호출할 수도 있습니다.

이 파일에는 다음과 같은 정보가 포함됩니다.

  • 종료자가 개체에 대해 가비지 수집기를 실행한 시점을 나타내는 타임스탬프

  • 종료된 개체의 클래스

추적

WCF(Windows Communication Foundation)의 코드 예외를 로깅합니다. 데스크톱의 .NET Framework에서는 추적, 메시징 및 이벤트 로깅이라는 세 가지 형식의 로깅을 지원합니다. .NET Compact Framework의 WCF는 코드 예외를 추적하는 추적 로깅만 지원하고 경고 및 오류 메시지를 로깅하지 않습니다.

이 로그는 .NET Compact Framework 3.5 및 이후 버전에서 지원됩니다.

기본적으로 로그 파일은 진단 중인 응용 프로그램이 들어 있는 동일한 디렉터리에 쓰여집니다. 하지만 다음과 같이 레지스트리 키를 사용하여 경로와 기타 옵션을 지정할 수 있습니다.

  • 대체 경로를 사용하여 로그 파일을 씁니다. 이 경우 보안 레지스트리에 대한 액세스 권한이 있어야 합니다.

  • 로그 파일 이름에 응용 프로그램 이름을 포함합니다.

  • 로그 파일 이름에 프로세스 ID를 포함합니다.

로그 파일 이름은 다음과 같이 구성되며, 여기서 component는 "Interop", "Error", "Loader", "Network", "Finalizer" 또는 "Trace"가 될 수 있습니다.

netcf_application-name_component_processID.log

응용 프로그램 이름과 프로세스 ID는 선택적이며 레지스트리 설정을 기반으로 합니다.

예를 들어 MyApp.exe라는 응용 프로그램의 로더 로그 파일 이름은 다음과 같이 지정할 수 있습니다.

netcf_MyApp_Loader_2066923010.log

interop 및 로더 로그 파일과 같은 로그 파일을 검사하는 방법에 대한 자세한 내용은 로그 파일 정보를 참조하십시오.

로깅을 활성화하려면

  • 다음 Enabled 키 값을 1로 설정합니다.

    HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Enabled

    interop, 로더, 오류, 네트워킹, 종료자 및 추적과 같은 6가지 형식의 로깅을 활성화하려면 이 키 값을 설정해야 합니다. Logging 아래의 하위 키는 기본적으로 존재하지 않습니다.

    이 값을 0으로 설정하여 모든 로깅을 해제할 수 있습니다.

로그 파일의 경로를 지정하려면(옵션)

  • 다음 Path 키 값을 로그 파일의 위치를 나타내는 문자열로 설정합니다.

    HKLM\Security\.NETCompactFramework\Diagnostics\Logging\Path

    이 키는 보안 레지스트리에 쓸 수 있는 응용 프로그램에서만 액세스할 수 있습니다. 경로를 지정하지 않으면 로그 파일은 응용 프로그램이 들어 있는 디렉터리에 쓰여집니다.

응용 프로그램을 이름에 포함하려면(옵션)

  • 다음 UseApp 키 값을 1로 설정합니다.

    HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\UseApp

    이 키는 여러 응용 프로그램을 실행하고 각 응용 프로그램에 대해 별도의 로그 파일을 가져오려는 경우 유용합니다. 두 응용 프로그램이 같은 디렉터리에 로그 파일을 쓰는 경우 이전 로그 파일은 항상 두 번째 응용 프로그램이 실행될 때 새 로그 파일로 덮어쓰여집니다. UseApp 키는 로그 파일의 구분자로 사용될 수 있습니다.

프로세스 ID를 이름에 포함하려면(옵션)

  • 다음 UsePid 키 값을 1로 설정합니다.

    HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\UsePid

    이 키는 하나의 응용 프로그램을 여러 번 실행하여 각 인스턴스에 대해 별도의 로그를 만들려는 경우 유용합니다. 이 설정은 프로세스 ID를 로그 파일 이름에 추가하므로 응용 프로그램의 각 인스턴스가 다른 이름의 새 로그 파일을 만듭니다.

이벤트가 발생할 때 이벤트를 로깅하려면(옵션)

  • 다음 Flush 키 값을 1로 설정합니다.

    HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Flush

    이 값은 CLR(공용 언어 런타임)에서 로그 이벤트를 버퍼에 유지하다가 버퍼가 꽉 차면 로그 파일에 쓰는 대신 로그 이벤트가 발생할 때 로그 파일에 쓰도록 합니다. 이 설정은 응용 프로그램의 성능을 저하시킬 수 있으며 응용 프로그램의 타이밍을 미세하게 수정할 수 있습니다. 그러나 응용 프로그램 실패 또는 기타 오류와 관련된 문제를 진단할 때 오류의 원인이 된 마지막 몇 개의 이벤트를 확인하려는 경우에는 이 설정이 유용합니다. 이 키가 없거나 설정되어 있지 않으면 버퍼가 꽉 찰 때까지 데이터를 로그 파일에 쓰지 않습니다.

Interop 로깅

Interop 로깅을 활성화하려면

  • 다음 Enabled 키 값을 1로 설정합니다.

    HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Interop\Enabled

오류 로깅

오류 로깅을 활성화하려면

  • 다음 Enabled 값을 1로 설정합니다.

    HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Error\Enabled

로더 로깅

로더 로깅을 활성화하려면

  • 다음 Enabled 값을 1로 설정하여 로더에 대해 로깅을 사용하도록 설정합니다. 로더 및 전역 어셈블리 캐시에 대해 로깅을 사용하도록 설정하려면 이 값을 2로 설정합니다.

    HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Loader\Enabled

네트워킹 로깅

네트워킹 로깅을 활성화하려면

  • 다음 Enabled 값을 1로 설정합니다.

    HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Networking\Enabled

    네트워킹 로그 파일은 이진 파일이므로 로그를 이진 형식을 사용자가 인식할 수 있는 형식으로 변환하는 .NET Compact Framework 로그 뷰어인 Logviewer.exe가 없이는 읽을 수 없습니다. .NET Compact Framework 3.5 및 이후 버전에서는 Power Toys for .NET Compact Framework에 로그 뷰어가 포함되어 있습니다. 이 도구는 .NET Compact Framework Downloads 페이지에서 다운로드할 수 있습니다.

종료자 로깅

종료자 로깅을 활성화하려면

  • 다음 Enabled 값을 1로 설정합니다.

    HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Finalizer\Enabled

추적 로깅

WCF 추적 로깅을 활성화하려면

  • 다음 Enabled 값을 1로 설정합니다.

    HKLM\Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\WCF\Enabled

예제

레지스트리 키 값은 원격 레지스트리 편집기를 사용하여 설정할 수도 있고 해당 값을 설정하는 응용 프로그램을 작성할 수도 있습니다. 이 단원의 예제에는 필요한 레지스트리 작업을 처리하는 다음 메서드가 포함되어 있습니다.

  • EnableLogging 메서드는 일반 로깅을 활성화하며, 로그 파일의 대체 경로를 지정하는 매개 변수와 응용 프로그램 이름 및 프로세스 ID를 로그 파일 이름에 추가할 것인지 여부 및 이벤트를 발생 시에 로깅할 것인지 여부를 지정하는 매개 변수를 포함합니다.

  • SetInteropLogging, SetLoaderLogging 및 SetNetworkLogging 메서드는 해당 Enabled 키 값을 1로 설정하므로 해당 구성 요소에 대한 로깅이 활성화됩니다.

  • DisableLogging 메서드는 모든 로깅을 사용하지 않습니다.

  • WriteLoggingSettings 메서드는 Logging 하위 키 아래의 키를 재귀적으로 조사하고 해당 이름과 값을 로그 파일에 씁니다. 로그 파일은 이름이 logsettings.txt로 지정되어 이 예제 응용 프로그램이 들어 있는 디렉터리에 배치됩니다.

' This method enables general logging. It contains parameters
' to specify a path, and Boolean values of true to include
' the application name, process ID, and events in the log.
Private Sub EnableLogging(ByVal useApp As Boolean, ByVal usePid As Boolean, ByVal useFlush As Boolean) 
    ' Specify values for setting the registry.
    Dim userRoot As String = "HKEY_LOCAL_MACHINE"
    Dim subkey As String = "SOFTWARE\Microsoft\.NETCompactFramework\Diagnostics\Logging"
    Dim keyName As String = userRoot + "\" + subkey

    ' Set the Enabled registry value.
    Registry.SetValue(keyName, "Enabled", 1)

    If useApp = True Then
        Registry.SetValue(keyName, "UseApp", 1)
    Else
        Registry.SetValue(keyName, "UseApp", 0)
    End If 
    If usePid = True Then
        Registry.SetValue(keyName, "UsePid", 1)
    Else
        Registry.SetValue(keyName, "UsePid", 0)
    End If 
    If useFlush = True Then
        Registry.SetValue(keyName, "UseFlush", 1)
    Else
        Registry.SetValue(keyName, "UseFlush", 0)
    End If

End Sub

' This method sets the Enabled key value to 1
' so that logging for Interoperability is enabled.
Private Sub SetInteropLogging(ByVal logOn As Boolean) 
    ' Specify values for setting the registry.
    Dim userRoot As String = "HKEY_LOCAL_MACHINE"
    Dim subkey As String = "Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Interop"
    Dim keyName As String = userRoot + "\" + subkey

    Dim logSet As Integer
    If logOn = True Then
        logSet = 1
    Else
        logSet = 0
    End If 
    ' Set the registry value.
    Try
        Registry.SetValue(keyName, "Enabled", logSet)
        If logOn = True Then
            MessageBox.Show("Interop Logging On")
        Else
            MessageBox.Show("Interop Logging Off")
        End If
    Catch ex As System.Exception
        MessageBox.Show(ex.Message)
    End Try

End Sub


' This method sets the Enabled key value to 1
' so that logging for class loading is enabled.
Private Sub SetLoaderLogging(ByVal logOn As Boolean) 
    ' Specify values for setting the registry.
    Dim userRoot As String = "HKEY_LOCAL_MACHINE"
    Dim subkey As String = "Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Loader"
    Dim keyName As String = userRoot + "\" + subkey

    Dim logSet As Integer
    If logOn = True Then
        logSet = 1
    Else
        logSet = 0
    End If 
    ' Set the registry value.
    Try
        Registry.SetValue(keyName, "Enabled", logSet)
        If logOn = True Then
            MessageBox.Show("Loader Logging On")
        Else
            MessageBox.Show("Loader Loggin Off")
        End If
    Catch ex As System.Exception
        MessageBox.Show(ex.Message)
    End Try

End Sub


' This method sets the Enabled key value to 1,
' so that logging for networking is enabled.
Private Sub SetNetworkLogging(ByVal logOn As Boolean) 
    ' Specify values for setting the registry.
    Dim userRoot As String = "HKEY_LOCAL_MACHINE"
    Dim subkey As String = "Software\Microsoft\.NETCompactFramework\Diagnostics\Logging\Networking"
    Dim keyName As String = userRoot + "\" + subkey

    Dim logSet As Integer
    If logOn = True Then
        logSet = 1
    Else
        logSet = 0
    End If 
    ' Set the registry value.
    Try
        Registry.SetValue(keyName, "Enabled", logSet)
        If logOn = True Then
            MessageBox.Show("Networking Logging On")
        Else
            MessageBox.Show("Networking Logging Off")
        End If
    Catch ex As System.Exception
        MessageBox.Show(ex.Message)
    End Try

End Sub


' This method disables all logging.
Private Sub DisableLogging() 
    ' Specify values for setting the registry.
    Dim userRoot As String = "HKEY_LOCAL_MACHINE"
    Dim subkey As String = "SOFTWARE\Microsoft\.NETCompactFramework\Diagnostics\Logging"
    Dim keyName As String = userRoot + "\" + subkey

    ' Set the Enabled registry value.
    Registry.SetValue(keyName, "Enabled", 0)
    MessageBox.Show("Logging Disabled")

End Sub


' This method recursively examines the keys
' under the Logging subkey and writes their
' key names and values to a log file. It saves
' the information in "logsettings.txt", located
' in the directory that contains this example
' application.
Private Sub WriteLoggingSettings() 
    Dim sw As New StreamWriter("logsettings.txt", False)
    sw.WriteLine("General Logging Settings:")
    Dim rkLogging As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\.NETCompactFramework\Diagnostics\Logging")
    Dim valNames As String() = rkLogging.GetValueNames()
    Dim x As Integer
    For x = 0 To valNames.Length
        sw.WriteLine(valNames(x).ToString() + ": " + rkLogging.GetValue(valNames(x)).ToString())
    Next x

    sw.WriteLine()
    sw.WriteLine("Interop Logging:")
    Dim rkInterop As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\.NETCompactFramework\Diagnostics\Logging\Interop")
    Dim interopNames As String() = rkInterop.GetValueNames()

    For x = 0 To interopNames.Length
        sw.WriteLine(interopNames(x).ToString() + ": " + rkInterop.GetValue(interopNames(x)).ToString())
    Next x

    sw.WriteLine()
    sw.WriteLine("Loader Logging:")
    Dim rkLoader As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\.NETCompactFramework\Diagnostics\Logging\Loader")
    Dim loaderNames As String() = rkLoader.GetValueNames()
    For x = 0 To loaderNames.Length
        sw.WriteLine(loaderNames(x).ToString() + ": " + rkLoader.GetValue(loaderNames(x)).ToString())
    Next x

    sw.WriteLine()
    sw.WriteLine("Networking Logging:")
    Dim rkNetworking As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\.NETCompactFramework\Diagnostics\Logging\Networking")
    Dim netNames As String() = rkNetworking.GetValueNames()
    For x = 0 To netNames.Length
        sw.WriteLine(netNames(x).ToString() + ": " + rkNetworking.GetValue(netNames(x)).ToString())
    Next x
    sw.Close()
End Sub
// This method enables general logging. It contains parameters
// to specify a path, and Boolean values of true to include
// the application name, process ID, and events in the log.
private void EnableLogging(bool useApp, bool usePid, bool useFlush)
{
    // Specify values for setting the registry.
    string userRoot = "HKEY_LOCAL_MACHINE";
    string subkey = "SOFTWARE\\Microsoft\\.NETCompactFramework\\Diagnostics\\Logging";
    string keyName = userRoot + "\\" + subkey;

    // Set the Enabled registry value.
    Registry.SetValue(keyName, "Enabled", 1);

    if (useApp == true)
        Registry.SetValue(keyName, "UseApp", 1);
    else
        Registry.SetValue(keyName, "UseApp", 0);

    if (usePid == true)
        Registry.SetValue(keyName, "UsePid", 1);
    else
        Registry.SetValue(keyName, "UsePid", 0);

    if (useFlush == true)
        Registry.SetValue(keyName, "UseFlush", 1);
    else
        Registry.SetValue(keyName, "UseFlush", 0);
}

// This method sets the Enabled key value to 1
// so that logging for Interoperability is enabled.
private void SetInteropLogging(bool logOn)
{
    // Specify values for setting the registry.
    string userRoot = "HKEY_LOCAL_MACHINE";
    string subkey = "Software\\Microsoft\\.NETCompactFramework\\Diagnostics\\Logging\\Interop";
    string keyName = userRoot + "\\" + subkey;

    int logSet;
    if(logOn == true)
      logSet = 1;
    else
      logSet = 0;

    // Set the registry value.
    try
    {
     Registry.SetValue(keyName, "Enabled", logSet);
     if(logOn == true)
        MessageBox.Show("Interop Logging On");
     else
        MessageBox.Show("Interop Logging Off");
     }
     catch(System.Exception ex)
     {
        MessageBox.Show(ex.Message);
     }
}

// This method sets the Enabled key value to 1
// so that logging for class loading is enabled.
private void SetLoaderLogging(bool logOn)
{
    // Specify values for setting the registry.
    string userRoot = "HKEY_LOCAL_MACHINE";
    string subkey = "Software\\Microsoft\\.NETCompactFramework\\Diagnostics\\Logging\\Loader";
    string keyName = userRoot + "\\" + subkey;

    int logSet;
    if(logOn == true)
    logSet = 1;
    else
    logSet = 0;

    // Set the registry value.
    try
    {
        Registry.SetValue(keyName, "Enabled", logSet);
        if(logOn == true)
        MessageBox.Show("Loader Logging On");
        else
        MessageBox.Show("Loader Logging Off");
    }
    catch(System.Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

  // This method sets the Enabled key value to 1
  // so that logging for networking is enabled.
  private void SetNetworkLogging(bool logOn)
  {
    // Specify values for setting the registry.
    string userRoot = "HKEY_LOCAL_MACHINE";
    string subkey = "Software\\Microsoft\\.NETCompactFramework\\Diagnostics\\Logging\\Networking";
    string keyName = userRoot + "\\" + subkey;

    int logSet;
    if(logOn == true)
      logSet = 1;
    else
      logSet = 0;

    // Set the registry value.
    try
    {
         Registry.SetValue(keyName, "Enabled", logSet);
         if(logOn == true)
            MessageBox.Show("Networking Logging On");
         else
            MessageBox.Show("Networking Loggin Off");
     }
     catch(System.Exception ex)
     {
        MessageBox.Show(ex.Message);
     }
  }

// This method disables all logging.
private void DisableLogging()
{
    // Specify values for setting the registry.
    string userRoot = "HKEY_LOCAL_MACHINE";
    string subkey = "SOFTWARE\\Microsoft\\.NETCompactFramework\\Diagnostics\\Logging";
    string keyName = userRoot + "\\" + subkey;

    // Set the Enabled registry value.
    Registry.SetValue(keyName, "Enabled", 0);
    MessageBox.Show("Logging Disabled");
}

// This method recursively examines the keys
// under the Logging subkey and writes their
// key names and values to a log file. It saves
// the information in "logsettings.txt" located
// in the directory that contains this 
// example application.
private void WriteLoggingSettings()
{
    StreamWriter sw = new StreamWriter("logsettings.txt",false);
    sw.WriteLine("General Logging Settings:");
    RegistryKey rkLogging = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\.NETCompactFramework\\Diagnostics\\Logging");
    string[] valNames = rkLogging.GetValueNames();
    for (int x = 0; x < valNames.Length; x++)
    {
        sw.WriteLine(valNames[x].ToString() + ": " + rkLogging.GetValue(valNames[x]).ToString());
    }

    sw.WriteLine();
    sw.WriteLine("Interop Logging:");
    RegistryKey rkInterop = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\.NETCompactFramework\\Diagnostics\\Logging\\Interop");
    string[] interopNames = rkInterop.GetValueNames();
    for (int x = 0; x < interopNames.Length; x++)
    {
        sw.WriteLine(interopNames[x].ToString() + ": " + rkInterop.GetValue(interopNames[x]).ToString());
    }

    sw.WriteLine();
    sw.WriteLine("Loader Logging:");
    RegistryKey rkLoader = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\.NETCompactFramework\\Diagnostics\\Logging\\Loader");
    string[] loaderNames = rkLoader.GetValueNames();
    for (int x = 0; x < loaderNames.Length; x++)
    {
        sw.WriteLine(loaderNames[x].ToString() + ": " + rkLoader.GetValue(loaderNames[x]).ToString());
    }

    sw.WriteLine();
    sw.WriteLine("Networking Logging:");
    RegistryKey rkNetworking = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\.NETCompactFramework\\Diagnostics\\Logging\\Networking");
    string[] netNames = rkNetworking.GetValueNames();
    for (int x = 0; x < netNames.Length; x++)
    {
        sw.WriteLine(netNames[x].ToString() + ": " + rkNetworking.GetValue(netNames[x]).ToString());
    }
   sw.Close();
}

코드 컴파일

이 예제에는 다음과 같은 네임스페이스에 대한 참조가 필요합니다.

참고 항목

개념

로그 파일 정보

기타 리소스

.NET Compact Framework의 성능 및 진단