본문 바로가기
C# 기술

log4net 사용법 ( Visual Studio Windows form ) C#

by bryan.oh 2019. 1. 11.
반응형

LOG4NET 사용법

Visual Studio 2017

Windows Form Project 



로깅은 모든 개발의 필수라고 할 수 있습니다.

개발할때는 디버깅툴을 사용한다고 해도 로그를 찍어야 편하고, 

프로그램을 릴리즈 해서 사용자가 사용하게 되면 버그를 잡을때 꼭 필요한게 로그 입니다.


아파치의 log4net 의 사용법을 알아보겠습니다.



일단 테스트할 프로젝트를 생성합니다.

[파일] -> [새로만들기] -> [프로젝트] 클릭


Visual C# 에서 Windows Forms 앱(.NET Framework) 를 선택하고 이름을 입력합니다.



Windows form 이 생성됩니다.

일단 NuGet 패키지 관리자에서 Log4net 을 검색하여 설치합니다.

예전에는 log4net.dll 을 다운로드 받아 참조에서 추가시켜줬는데 ( 지금도 가능한 방법 이지만 ) NuGet 이란게 있어서 편하게 사용할 수 있습니다.

NuGet 패키지 관리자를 실행합니다.


우측 솔루션에서 우클릭 -> NeGet 패키지 관리 클릭


찾아보기 탭에서 log4net 을 입력하면, 조회결과에 log4net 이 나옵니다. 

항목 우측의 아래화살표 버튼을 누르면 현재 프로젝트에 추가됩니다.


참조에 log4net.dll 이 추가되어있을 겁니다.


그리고나서 form 의 가운데 부분을 더블클릭합니다.

참고

Form 더블클릭 -> Form_Load 함수를 생성합니다

Button 더블클릭 -> Button_Click 함수를 생성합니다.


아래의 위치에 소스를 입력합니다.

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(Form1));

// GetLooger 의 파라메터인 typeof(Form1) 은 현재 클래스를 넣어줍니다.

// 전역 변수로 입력해줍니다.


// 초기화 함수(public Form1())에 넣어줍니다.

XmlConfigurator.Configure(new FileInfo("log4net.xml"));

// 오류가 발생하는데 마우스를 가져대거나 alt+enter 를 치면 using log4net.Config; 를 선택해줍니다.

// 마찬가지로 FileInfo 도 using 을 추가해 오류가 나지않게 합니다.


소스를 보면 log4net.xml 이 보입니다. 파일을 넣어줘야겠죠.


log4net.xml


이 파일을 다운로드 해서, 복사한 다음 프로젝트를 한번 클릭하고 붙혀넣기를 합니다.


여기서 주의 : 위에서 FileInfo("log4net.xml") 이라고 했으니 실행 경로위치에 저 파일이 있어야 합니다.

디버그 모드로 실행하면 Debug 폴더, 릴리즈 모드로 실행하면 Release 폴더에 log4net.xml 이 있어야 하겠죠.

실행할때 각각 폴더로 자동 복사하려면 아래와 같이 log4net.xml 파일에서 우클릭하여 속성으로 들어가 출력디렉터리에 복사 옵션을 선택합니다.



Form Load 할때 호출되는 Form_Load 메소드에 로그를 찍게 해봅니다.

        private void Form1_Load(object sender, EventArgs e)

        {

            log.Debug("Form1 Loaded Complete~!");

        }


그리고 F5 를 누르거나 시작 버튼을 누릅니다.



그럼 프로그램이 실행될겁니다. 

Form이 뜨면 그냥 닫습니다. Load 가 되었으니 로그를 확인해봐야겠죠.


솔루션이나 프로젝트에서 우클릭 -> 파일탐색기에서 폴더열기



Debug 로 실행했으니 Debug > logs 폴더가 있고 그 아래 log 파일이 생겼습니다.

그리고 그 내용은 텍스트 에디터로 확인할 수 있습니다.



사용 가능한 로그 Level 은 아래와 같습니다.


  •             log.Debug("debug~");
  •             log.Info("info~");
  •             log.Warn("warn~");
  •             log.Error("error~");
  •             log.Fatal("fatal~");


log4net.xml 에 로그 래밸을 설정하면 그보다 중요한 로그는 다 쓰도록 됩니다.

중요도 : ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF

ALL 이면 모두 로깅. OFF 면 로그 출력 안함. WARN 이면 WARN,ERROR,FATAL 만 출력.

예를들면 log level 을 ERROR 로 해뒀다면, 소스에서 log.Debug("디버그입니다."); 라고 되어있는것은 로그에 남지 않습니다.

개발은 Debug 로 하고, 배포할땐  초기엔 Info 정도로 하고, 프로그램이 문제없이 잘 돌아간다고 하면 ERROR 로 설정해두면 되겠죠? (개인적인 생각)


log4net.xml 의 내용에 괸련해서 자세한 설명은 나중에 포스팅 하겠습니다.





2019/01/10 - [C#] - Visual Studio Build Environmant, 빌드 환경 변수 설정

2019/01/06 - [Tensorflow] - window python install, 윈도우 파이선 설치



728x90
반응형

댓글