[英]Force log4net logging level
事實證明,我的一位同事已禁用源代碼中的日志記錄級別檢查:
private static void Log(string source, EnumLogType logType, string msg)
{
....
switch (logType)
{
case EnumLogType.ERROR:
//if (log.IsErrorEnabled) { log.Error(logMsg); }
log.Error(logMsg);
break;
case EnumLogType.WARNING:
//if (log.IsWarnEnabled) { log.Warn(logMsg); }
log.Warn(logMsg);
break;
case EnumLogType.INFO:
//if (log.IsInfoEnabled) { log.Info(logMsg); }
log.Info(logMsg);
break;
case EnumLogType.VERBOSE:
//if (log.IsDebugEnabled) { log.Debug(logMsg); }
log.Debug(logMsg);
break;
default:
log.Debug(logMsg);
break;
}
}
所以我們的產品現在正在編寫調試日志,即使配置文件中的級別設置為ERROR。
有沒有辦法強制log4net只記錄錯誤消息? 換句話說,我可以強制log4net通過配置它來檢查日志記錄級別,而無需編輯和重新編譯源代碼嗎?
您的同事僅禁用了您自己的EnumLogType
級別設置。
log4net日志記錄級別仍然有效。
在AppName.Exe.config或Web.Config中,使用以下內容:
<log4net>
...
<logger name="...">
...
<level value="Error" />
</logger>
</log4net>
你用什么appender? 如果它是DatabaseAppender,您可以嘗試更改sql命令文本。
或者,您可以編輯log4net.config文件,僅使用過濾器部分為某些日志級別應用某些appender。
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="{LogName}" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%date] [%level] [%thread] [%logger] [%P{userLoginName}] [%P{HostName}] [%P{IPAddress}] [%P{methodName}] [%message] [%exception]%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="WARN" />
</filter>
</appender>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.