콘솔 로그 출력

콘솔 애플리케이션 로그 출력 기능을 구현하며 로그 레벨별로 글자색·배경색을 커스텀할 수 있습니다. 디버깅 단계에서 가독성이 매우 좋습니다.

  1. Visual Studio에서 새 콘솔 애플리케이션 프로젝트 생성
  2. 프로젝트에 App.config 설정 파일 추가
  3. log4net 적용 (NuGet 설치 / log4net.dll 참조)
  4. App.config 내부에 log4net 설정 작성
  5. 코드에서 log4net을 초기화하고 로그 출력

콘솔 로그는 로그 레벨마다 전경색과 배경색을 지정해 로그 종류를 쉽게 구분할 수 있습니다.

App.config 설정

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <!-- 컬러 콘솔 출력 어펜더 ColoredConsoleAppender -->
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <!-- ERROR 레벨 색상 설정 -->
      <mapping>
        <level value="ERROR" />
        <foreColor value="White" />
        <backColor value="Red, HighIntensity" />
      </mapping>
      <!-- DEBUG 레벨 색상 설정 -->
      <mapping>
        <level value="DEBUG" />
        <backColor value="Green" />
      </mapping>
      <!-- INFO 레벨 색상 설정 -->
      <mapping>
        <level value="Info" />
        <backColor value="Yellow" />
      </mapping>
      <!-- WARN, FATAL은 필요에 따라 매핑 색상을 추가하세요 -->

      <!-- 로그 출력 형식 템플릿 -->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

    <!-- 루트 로거, 콘솔 출력 활성화 -->
    <root>
      <level value="All" />
      <appender-ref ref="ColoredConsoleAppender" />
    </root>
  </log4net>
</configuration>Code language: HTML, XML (xml)
형식 자리표 설명
  • %date:로그 발생 시간
  • [%thread]:스레드 ID
  • %-5level:로그 레벨(5문자 너비 정렬)
  • %logger:로그 출력 클래스 이름
  • %message:로그 본문 내용
  • %newline:자동 줄바꿈

Program.cs

using System;
using log4net;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // log4net 설정 불러와 초기화
            log4net.Config.XmlConfigurator.Configure();
            // 로거 인스턴스 가져오기, 현재 클래스 타입 전달하여 로그 출처 추적
            ILog logger = LogManager.GetLogger(typeof(Program));

            // 각 레벨 로그 출력
            logger.Info("일반 로그");
            logger.Error("오류 로그");
            logger.Debug("디버그 메시지");
            logger.Fatal("치명적 오류");
            logger.Warn("경고 메시지");

            Console.ReadKey();
        }
    }
}Code language: JavaScript (javascript)

실행 결과

로그 레벨에 따라 콘솔에 자동으로 배경색이 적용됩니다:

  • INFO:노란색 배경
  • DEBUG:녹색 배경
  • ERROR / FATAL:밝은 붉은색 배경
  • WARN:노란색 배경

출력 예시:

2017-03-21 20:35:31,550 [9] INFO  ConsoleApplication1.Program [(null)] - 일반 로그
2017-03-21 20:35:31,592 [9] ERROR ConsoleApplication1.Program [(null)] - 오류 로그
2017-03-21 20:35:31,592 [9] DEBUG ConsoleApplication1.Program [(null)] - 디버그 메시지
2017-03-21 20:35:31,593 [9] FATAL ConsoleApplication1.Program [(null)] - 치명적 오류
2017-03-21 20:35:31,594 [9] WARN  ConsoleApplication1.Program [(null)] - 경고 메시지Code language: CSS (css)

콘솔 로그 출력

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다