强制 log4net 日志级别
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>
你使用什么附加程序?如果它是 DatabaseAppender,您可以尝试更改 sql 命令文本。
或者您可以使用过滤器部分编辑 log4net.config 文件以仅将某些附加程序应用于某些日志级别。
<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>
原来我的一位同事在源代码中禁用了日志记录级别检查:
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>
你使用什么附加程序?如果它是 DatabaseAppender,您可以尝试更改 sql 命令文本。
或者您可以使用过滤器部分编辑 log4net.config 文件以仅将某些附加程序应用于某些日志级别。
<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>