재우니의 블로그

 

 

Apache log4net™ configurations  샘플예제

 

 

개요

이 문서는 내장된 appenders 에 대한 예제 configurations 을 제공합니다. 이러한 configurations 는 log4net.Config.DOMConfigurator  log4net.Repository.Hierarchy.Hierarchy  와 함께 작동하도록 설계되었습니다.

이러한 예제는 appender에 대한 완전한 configurations  이 아닙니다.  appender 에 지정할 수 있는 매개변수의 전체 목록과 각 옵션에 대한 자세한 내용은  appender 용 SDK 문서를 참조하세요.

 

 

AdoNetAppender

자세한 내용은 SDK 참조 항목( log4net.Appender.AdoNetAppender )을 참조하십시오 . 성능 및 데이터 수정 에 대한 BufferingForwardingAppender 의 참고 사항을 참조하십시오.

AdoNetAppender 의 구성은 대상 데이터베이스에 대해 선택한 공급자에 따라 다릅니다. 여기 몇 가지 예가 있어요.

 


 

MS SQL 서버

다음 예에서는 SQL Server 데이터베이스에 메시지를 기록하도록 AdoNetAppender 를 구성하는 방법을 보여줍니다. 이벤트는 100개( BufferSize )의 배치로 기록됩니다. ConnectionType  데이터베이스에 연결하는 데 사용할 System.Data.IDbConnection 의 정규화된 형식 이름을 지정합니다. 

 

ConnectionString 은 데이터베이스 공급자에 따라 다릅니다 . CommandText 는 prepared statement 이거나 stored procedure 이며, 이 경우 prepared statement 입니다. prepared statement 또는 stored procedure 에 대한 각 매개변수는 해당 이름, 데이터베이스 유형 및 매개변수 값을 렌더링하는 레이아웃으로 지정됩니다.

 

데이터베이스 테이블 정의는 다음과 같습니다. 

CREATE TABLE [dbo].[Log] (
    [Id] [int] IDENTITY (1, 1) NOT NULL,
    [Date] [datetime] NOT NULL,
    [Thread] [varchar] (255) NOT NULL,
    [Level] [varchar] (50) NOT NULL,
    [Logger] [varchar] (255) NOT NULL,
    [Message] [varchar] (4000) NOT NULL,
    [Exception] [varchar] (2000) NULL
)

 

appender configuration 내용입니다.

 

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    <bufferSize value="100" />
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <connectionString value="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" />
    <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
    <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
    </parameter>
    <parameter>
        <parameterName value="@thread" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%thread" />
        </layout>
    </parameter>
    <parameter>
        <parameterName value="@log_level" />
        <dbType value="String" />
        <size value="50" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%level" />
        </layout>
    </parameter>
    <parameter>
        <parameterName value="@logger" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%logger" />
        </layout>
    </parameter>
    <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%message" />
        </layout>
    </parameter>
    <parameter>
        <parameterName value="@exception" />
        <dbType value="String" />
        <size value="2000" />
        <layout type="log4net.Layout.ExceptionLayout" />
    </parameter>
</appender>

 


FileAppender (파일에 추가)

 

다음 예제에서는 파일에 메시지를 쓰도록 FileAppender를 구성하는 방법을 보여줍니다. 지정된 파일은 log-file.txt입니다. 파일은 로깅 프로세스가 시작될 때마다 덮어쓰지 않고 추가됩니다.

 

 

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="log-file.txt" />
    <appendToFile value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

 

 

이 예는 환경 변수 TMP를 사용하여 쓸 파일 이름을 구성하는 방법을 보여줍니다. 파일에 쓰는 데 사용할 인코딩도 지정됩니다.

 

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="${TMP}\log-file.txt" />
    <appendToFile value="true" />
    <encoding value="unicodeFFFE" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

 

 

이 예제는 여러 프로세스 ( multiple processes) 가 동일한 파일에 쓸 수 있도록 허용하는 최소 잠금 모델을 사용하도록 appender  를 구성하는 방법을 보여줍니다.

 

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="${TMP}\log-file.txt" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

 

이 예제는 "inter process" 잠금 모델을 사용하도록 어펜더를 구성하는 방법을 보여줍니다.

 

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="${TMP}\log-file.txt" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+InterProcessLock" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

 

 

 

참고 사이트

 

https://logging.apache.org/log4net/release/config-examples.html

 

Apache log4net – Apache log4net: Config Examples - Apache log4net

Apache log4net™ Config Examples Overview This document presents example configurations for the built-in appenders. These configurations are designed to work with the log4net.Config.DOMConfigurator and the log4net.Repository.Hierarchy.Hierarchy. These exa

logging.apache.org