사용자 도구

사이트 도구


product:povice:framework:log

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
product:povice:framework:log [2022-11-15 15:20] – ↷ 문서가 product:povice:log에서 product:povice:framework:log(으)로 이동되었습니다 shincsproduct:povice:framework:log [2024-02-26 09:16] (현재) – [사용자 정의] suri
줄 37: 줄 37:
 ===== File 로그 ===== ===== File 로그 =====
  
-파일에 쓰는 로그를 사용합니다. 기본 디렉토리 위치는 ''Log.DefaultDirectoryPath''에 정의된 위치입니다. 기본적으로 FileLog 클래스를 사용합니다. 기본 디렉토리 위치를 변경하려면 FileLog 클래스 생성시 디렉토리 위치를 전달하면 됩니다. FileLog를 사용자 정의를 하고 싶으면 FileLog 클래스를 상속받아 구현하는게 좋습니다. FileLog 클래스를 상속 받은 후 GetFileName() 메서드와 GetText() 메서드를 재정의하면 원하는 내용으로 로그를 남길 수 있습니다. +파일에 쓰는 로그를 사용합니다. 기본 디렉토리 위치는 ''Log.DefaultDirectoryPath'' 에 정의된 위치입니다. 기본적으로 FileLog 클래스를 사용합니다. 기본 디렉토리 위치를 변경하려면 FileLog 클래스 생성시 디렉토리 위치를 전달하면 됩니다. FileLog를 사용자 정의를 하고 싶으면 FileLog 클래스를 상속받아 구현하는게 좋습니다. FileLog 클래스를 상속 받은 후 GetFileName() 메서드와 GetText() 메서드를 재정의하면 원하는 내용으로 로그를 남길 수 있습니다.
 ===== 사용자 정의 ===== ===== 사용자 정의 =====
  
 어떤 종류의 로그라도 ''ILogBase'' 인터페이스를 구현하면 사용이 가능합니다. 정의된 로그의 종류는 아래와 같습니다. 어떤 종류의 로그라도 ''ILogBase'' 인터페이스를 구현하면 사용이 가능합니다. 정의된 로그의 종류는 아래와 같습니다.
  
-  * Log.Console : 콘솔 로그입니다.+   * Log.Console : 콘솔 로그입니다.
   * Log.Database : 데이터베이스 로그입니다.   * Log.Database : 데이터베이스 로그입니다.
   * Log.File : 파일 로그입니다.   * Log.File : 파일 로그입니다.
줄 52: 줄 51:
 <code csharp> <code csharp>
 using Povice; using Povice;
 +using System.Runtime.CompilerServices;
 +
 /// <summary> /// <summary>
 /// 데이터베이스에 로그를 남기는 클래스입니다. /// 데이터베이스에 로그를 남기는 클래스입니다.
 /// </summary> /// </summary>
-public class DatabaseLog : ILogBase+public class DatabaseLog : ILog
 { {
     /// <summary>     /// <summary>
줄 62: 줄 63:
     /// <param name="e">로그 이벤트 데이터가 포함된 클래스의 개체입니다.</param>     /// <param name="e">로그 이벤트 데이터가 포함된 클래스의 개체입니다.</param>
     public void Write(LogEventArgs e)     public void Write(LogEventArgs e)
 +    {
 +        // 데이터베이스에 로그를 남기는 쿼리를 구현합니다.
 +    }
 +
 +    public void Write(string text, LogLevel level = LogLevel.Info, [CallerMemberName] string callerMemberName = null)
     {     {
         // 데이터베이스에 로그를 남기는 쿼리를 구현합니다.         // 데이터베이스에 로그를 남기는 쿼리를 구현합니다.
줄 69: 줄 75:
 // DatabaseLog 클래스를 전역 멤버인 Log.Database에 설정합니다. // DatabaseLog 클래스를 전역 멤버인 Log.Database에 설정합니다.
 Log.Database = new DatabaseLog(); Log.Database = new DatabaseLog();
 +
 // 콘솔과 데이터베이스에 모두 로그를 남기도록 설정합니다. // 콘솔과 데이터베이스에 모두 로그를 남기도록 설정합니다.
 Log.DefaultFlags = LogFlags.Console | LogFlags.Database; Log.DefaultFlags = LogFlags.Console | LogFlags.Database;
 +
 // 로그 클래스를 생성합니다. 로그 이름을 전달하여 종류를 파악할 수 있도록 합니다. // 로그 클래스를 생성합니다. 로그 이름을 전달하여 종류를 파악할 수 있도록 합니다.
 var log = new Log("LogTest"); var log = new Log("LogTest");
 +
 // 기본적으로 전역으로 설정한 Log.DefaultFlags를 사용합니다. // 기본적으로 전역으로 설정한 Log.DefaultFlags를 사용합니다.
 // 그러나, 다음과 같이 이 로그 개체에서만 다르게 동작하도록 변경할 수 있습니다. // 그러나, 다음과 같이 이 로그 개체에서만 다르게 동작하도록 변경할 수 있습니다.
 log.Flags = LogFlags.File | LogFlags.Database; log.Flags = LogFlags.File | LogFlags.Database;
 +
 // 실제 로그를 남기는 호출 코드입니다. // 실제 로그를 남기는 호출 코드입니다.
 log.Write("로그 내용"); log.Write("로그 내용");
 +
  
 </code> </code>
  
 System 로그는 윈도우 이벤트 로그와 같이 시스템에서 사용하는 로그를 대상으로 설정합니다. Console, File, Database, System 등 모두 별도로 설정이 가능하고 동시에 호출이 가능하므로 다양하게 활용할 수 있습니다. System 로그는 윈도우 이벤트 로그와 같이 시스템에서 사용하는 로그를 대상으로 설정합니다. Console, File, Database, System 등 모두 별도로 설정이 가능하고 동시에 호출이 가능하므로 다양하게 활용할 수 있습니다.
 +
  
 ===== 로그의 예외(Exception) ===== ===== 로그의 예외(Exception) =====
  
-로그를 남기는 코드에서 예외가 발생하면 ''LogException'' 예외가 전달됩니다. 전역 예외 처리를 별도로 구현하였고 그 처리 구현에서 다시 로그를 남기는 코드를 작성하였다면, 무한반복 호출이 발생할 수 있습니다. 그럴 때는 전역 예외 처리를 구현한 코드에서 LogException일 경우 로그를 다른 방법으로 남길 수 있는 방안을 모색해야 합니다. 제일 안전한 방법은 Console로 남기는 방법입니다.+로그를 남기는 코드에서 예외가 발생하면 ''LogException''  예외가 전달됩니다. 전역 예외 처리를 별도로 구현하였고 그 처리 구현에서 다시 로그를 남기는 코드를 작성하였다면, 무한반복 호출이 발생할 수 있습니다. 그럴 때는 전역 예외 처리를 구현한 코드에서 LogException일 경우 로그를 다른 방법으로 남길 수 있는 방안을 모색해야 합니다. 제일 안전한 방법은 Console로 남기는 방법입니다.
  
  
product/povice/framework/log.1668493217.txt.gz · 마지막으로 수정됨: 2022-11-15 15:20 저자 shincs