2017-10-23 1 views
1

내가 뭔가를 제대로 구성 (또는 이해)하지 않는 것 같아요. 두 개의 Appender를 사용하여 동일한 항목을 다른 로그 수준에서 기록하려고합니다. 내 로깅을위한 도우미 메서드를 만들었습니다.Log4net 다중 appenders 다른 로그 수준

public class LogHelper 
{ 
    public static ILog GetLogger([CallerFilePath]string filename = "") 
    { 
     return LogManager.GetLogger(filename); 
    } 
} 

후, 내 수업에서, 나는 여기에

private ILog log = LogHelper.GetLogger(); 

내의 app.config입니다 전화 :

<log4net> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="%property{StoragePath}\logs\" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Date" /> 
    <datePattern value="MMddyyyy'.log'" /> 
    <staticLogFileName value="false" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date{dd/MM/yyyy HH:mm:ss} %level - %message%newline%exception" /> 
    </layout> 
    </appender> 
    <appender name="WebApiAppender" type="<footype>"> 
    <threshold value="USERPLAY"/> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="USERPLAY" /> 
    </filter> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%m %property{Stream}" /> 
    </layout> 
    </appender> 
    <root> 
    <level value="INFO" /> 
    <appender-ref ref="RollingFileAppender" /> 
    <appender-ref ref="WebApiAppender" /> 
    </root> 

로깅 모두 작동하지만 내 임계 값 내 WebApiAppender가 존중되고 있지 않습니다. 루트 레벨을 기본값으로 사용합니다. 이것은 훨씬 더 많은 정보를 생성 내 webapi 타격 싶어요. 어떤 도움이라도 대단히 감사하겠습니다.

편집 :

또한 일부 사용자 지정 로그 수준을 사용합니다. 따라서 임계 값의 'USERPLAY'

사용자 정의 로그 수준은 :

static readonly Level ReconnectLevel = new Level(65000, "RECONNECT"); 
static readonly Level UserPlayLevel = new Level(45001, "USERPLAY"); 
static readonly Level ScheduledPlayLevel = new Level(45002, "SCHEDULEDPLAY"); 
static readonly Level UserStopLevel = new Level(45003, "USERSTOP"); 
static readonly Level ScheduledStopLevel = new Level(45004, "SCHEDULEDSTOP"); 
static readonly Level LocalBreakLevel = new Level(47000, "LOCALBREAK"); 
static readonly Level StationIdLevel = new Level(47001, "STATIONID"); 
static readonly Level GameEndLevel = new Level(47002, "GAMEEND"); 
static readonly Level WebApiLevel = new Level(35000, "WEBAPI"); 

답변

1

당신은 설정 파일에 사용자 지정 수준을 추가 했습니까? Log4net은 사용자 정의 레벨을 이미 알고있는 미리 정의 된 레벨과 비교할 필요가 있습니다.

<level> 
    <name value="USERPLAY" /> 
    <value value="35000" /> 
</level> 
+0

좋아요, 그래서 항목을 추가했지만 여전히 동일한 문제가 있습니다. –

+0

USREPLAY 레벨에 어떤 가치를 사용하셨습니까? 내가 믿는 정보는 40000입니다. – Mander

+0

참조를 위해 사용자 지정 로그 수준을 원래 게시물에 추가했습니다. @Mander –

관련 문제